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


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

    读入低照度下图像,然后把鸭子从背景分割出来。算法主要步骤: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 调试通过

    原始图像如下:

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

  • 相关阅读:
    Cisco Secure Firewall Threat Defense Virtual Release 7.2.0
    信息学奥赛一本通(c++):1118:铺地毯
    高性能算力中心 — RoCE — Overview
    Apache ShardingSphere(二) 基本使用
    Es中索引的删除操作
    【图像分割】基于布谷鸟算法实现二维Tsallis熵、kapur、oust多阈值图像分割附matlab代码
    Maven高级
    Python-Requests
    QWT下载、安装、配置教程
    微信小程序:仅前端实现对象数组的模糊查询
  • 原文地址:https://blog.csdn.net/xrgs_shz/article/details/139717539