首页 > 其他分享 >图像分割(二)——低照度下自然场景下图像分割的一种新方法

图像分割(二)——低照度下自然场景下图像分割的一种新方法

时间:2024-06-17 13:28:28浏览次数:21  
标签:subplot 分割 figure title imshow 照度 图像

一天傍晚,在景观河散步,看到景观河旁边雕塑鸭子,就用手机拍摄下来,但由于是晚上光线不是太好,且雕塑下面的地板有条纹和阴影。想着尝试用传统的数字图像处理方法把鸭子从自然场景中提取出来。

读入低照度下图像,然后把鸭子从背景分割出来。算法主要步骤:1.读入彩色图像;2.图像裁剪;3.彩色图像转灰度图像;4.对比度拉伸;5.图像二值化;6.数学形态学运算处理后的二值图像;7.边缘检测图像;8.边缘检测和阈值分割相结合进行目标分割;9.边缘检测和阈值分割相结合进行目标分割。结果显示,上述方法取得了较好的分割效果。

close all;% 关闭所有的图像窗口

clc;% 清除当前command区域的命令

imtool close all;%关闭imtool窗口

I0 = imread('duck1.jpg');

I = imcrop(I0,[190 170 1400 1000]);%图像裁剪

I2=rgb2gray(I);

figure,imshow(I2);

figure,imhist(I2);

I2Adjust=imadjust(I2); %对比度拉伸

figure,imshow(I2Adjust);

figure,imhist(I2Adjust);

imtool(I2Adjust);

I3=im2bw(I2Adjust,100/255); %图像二值化,阈值选择很关键

figure,imshow(I3);

I_4=~I3;

figure,imshow(I_4);

I_4=imfill(I_4,'holes');figure,imshow(I_4);

figure,imshow(I_4);

I_5=imclose(I_4,strel('disk',4)); %利用开运算连接物体,结构元素的形状和大小选择很关键

figure,imshow(I_5);

I_5=imopen(I_5,strel('disk',2));

figure,imshow(I_5);

I_6=bwareaopen(I_5,2100);

figure,imshow(I_6);

I_8=edge(I2,'sobel','vertical');%边缘检测,把原始图像中的水平线去掉

%I_8=edge(I2,'sobel');

figure,imshow(I_8);

I_9=I_6+I_8;

figure,imshow(I_9);%利用边缘检测和阈值分割相结合进行目标分割

I_10=imclose(I_9,strel('disk',9));

figure,imshow(I_10);

I_11=bwareaopen(I_10,500);

figure,imshow(I_11);

I_12=imfill(I_11,'holes');

figure,imshow(I_12);

I_13=imclose(I_12,strel('disk',18));

figure,imshow(I_13);

I_14=imfill(I_13,'holes');

figure,imshow(I_14);

I_15=imopen(I_14,strel('disk',10));

figure,imshow(I_15);

I_16=uint8(I_15).*I;

figure,imshow(I_16),title('将鸭子从背景分割中分割出来');

[L,num] = bwlabel(I_15);

disp('鸭子的数量')

num

figure('Name','低照度环境下的图像背景分割一种新方法','NumberTitle','off');

subplot(3,3,1),imshow(I0),title('显示原始图像');

subplot(3,3,2),imshow(I),title('图像裁剪');

subplot(3,3,3),imshow(I2),title('彩色图像转灰度图像');

subplot(3,3,4),imshow(I2Adjust),title('对比度拉伸');

subplot(3,3,5),imshow(I3),title('图像二值化');

subplot(3,3,6),imshow(I_6),title('数学形态学运算处理后的二值图像');

subplot(3,3,7),imshow(I_8),title('边缘检测图像');

subplot(3,3,8),imshow(I_9),title('边缘检测和阈值分割相结合进行目标分割');

subplot(3,3,9),imshow(I_15),title('边缘检测和阈值分割相结合进行目标分割');

%程序在MATLAB 2018a 调试通过

原始图像如下:

   欢迎各位网友对上面算法的不足之处提出改进意见,谢谢大家!

标签:subplot,分割,figure,title,imshow,照度,图像
From: https://blog.csdn.net/xrgs_shz/article/details/139717539

相关文章