matlab图像处理-目标检测与前背景分离

根据背景图和前景图,提取目标并计数
matlab图像处理-目标检测与前背景分离_第1张图片
matlab图像处理-目标检测与前背景分离_第2张图片
方案如下:
1.将两张图像反色,并进行减法运算,突出目标区域
2.对图像进行二值化
3.对图像进行二值化,创建圆形结构元素,进行开运算、闭运算
4.提取圆形区域个数并输出
matlab图像处理-目标检测与前背景分离_第3张图片

i1=imread('back.bmp');
i2=imread('target.bmp');
A=i1;
[rows , cols , colors] = size(A);%得到原来图像的矩阵的参数  
Res = zeros(rows , cols);%创建一个空矩阵用来存储新的灰度图
Res = uint8(Res);
Res(:,:,1)=255-A(:,:,1);
Res(:,:,2)=255-A(:,:,2);
Res(:,:,3)=255-A(:,:,3); 
B=i2;
[rows , cols , colors] = size(B);%得到原来图像的矩阵的参数  
Res1 = zeros(rows , cols);%创建一个空矩阵用来存储新的灰度图
Res1 = uint8(Res1);
Res1(:,:,1)=255-B(:,:,1);
Res1(:,:,2)=255-B(:,:,2);
Res1(:,:,3)=255-B(:,:,3);
C=Res1-Res;
figure,imshow(C);
img=C;
img = im2bw(img); %转换为灰度图
img=imopen(img,strel('disk',5)); % 对图像开运算
img=imclose(img,strel('disk',7)); % 对图像闭运算
figure,imshow(img);
b=img;
[centers,radii] = imfindcircles(b,[3 90],'ObjectPolarity','bright','Sensitivity',0.90,'EdgeThreshold',0.82); %在图片中寻找圆形
viscircles(centers,radii,'Color','r'); %绘制圆形
a=length(radii); %显示圆形个数
disp('圆形区域的个数是');
disp(a); %输出结果

matlab图像处理-目标检测与前背景分离_第4张图片
不同图像识别检测可改变上述代码的参数设置,预处理过程,以达到相关效果。
支持可以关注我哦,持续分享编写的代码。

你可能感兴趣的:(MTLAB-图像处理,图像处理,matlab)