基于matlab实现定位激光光斑中心的代码
时间: 2023-05-28 09:07:31 浏览: 231
由于定位激光光斑中心的方法有很多种,本答案提供一种常见的方法的matlab代码实现。
方法概述:通过对激光光斑进行高斯滤波,二值化,膨胀处理后,利用regionprops函数提取连通域信息,计算每个连通域的中心坐标作为光斑中心。
代码实现:
- 读取图像并显示
I = imread('laser_spot.jpg'); % 读取图像
figure,imshow(I); % 显示图像
title('原始图像');
- 对图像进行高斯滤波
G = fspecial('gaussian',[15 15],2); % 创建高斯滤波器
I = imfilter(I,G,'same'); % 对图像进行高斯滤波
figure,imshow(I); % 显示图像
title('高斯滤波后的图像');
- 对图像进行二值化处理
level = graythresh(I); % 自适应阈值处理
BW = im2bw(I,level); % 对图像进行二值化处理
figure,imshow(BW); % 显示图像
title('二值化后的图像');
- 对图像进行膨胀处理
se = strel('disk',5); % 创建圆形结构元素
BW = imdilate(BW,se); % 对图像进行膨胀处理
figure,imshow(BW); % 显示图像
title('膨胀处理后的图像');
- 提取连通域信息并计算光斑中心
s = regionprops(BW,'centroid'); % 提取连通域信息
centroid = cat(1, s.Centroid); % 获取连通域中心坐标
hold on;
plot(centroid(:,1),centroid(:,2),'r*'); % 在图像上绘制连通域中心
hold off;
title('定位光斑中心后的图像');
完整代码:
clc;clear;close all;
I = imread('laser_spot.jpg'); % 读取图像
figure,imshow(I); % 显示图像
title('原始图像');
G = fspecial('gaussian',[15 15],2); % 创建高斯滤波器
I = imfilter(I,G,'same'); % 对图像进行高斯滤波
figure,imshow(I); % 显示图像
title('高斯滤波后的图像');
level = graythresh(I); % 自适应阈值处理
BW = im2bw(I,level); % 对图像进行二值化处理
figure,imshow(BW); % 显示图像
title('二值化后的图像');
se = strel('disk',5); % 创建圆形结构元素
BW = imdilate(BW,se); % 对图像进行膨胀处理
figure,imshow(BW); % 显示图像
title('膨胀处理后的图像');
s = regionprops(BW,'centroid'); % 提取连通域信息
centroid = cat(1, s.Centroid); % 获取连通域中心坐标
hold on;
plot(centroid(:,1),centroid(:,2),'r*'); % 在图像上绘制连通域中心
hold off;
title('定位光斑中心后的图像');
运行结果:
相关推荐


















