使用颜色阈值分割图像和创建蒙版应用程序

方法分割图像并创建二进制掩码图像颜色阈值这个例子基于颜色值将前景(辣椒)和背景(紫色的布)分割。

颜色阈值应用程序,图像分割可以是一个迭代的过程。例如,尝试在应用程序支持的几个颜色空间中分割图像,因为一个颜色空间可能比另一个更好地隔离特定颜色。万博1manbetx在任何受支持的颜色空间中,首万博1manbetx先可以通过选择前景或背景中的区域来执行自动分割。然后,你可以使用应用程序提供的颜色组件控件来细化分割。

这个例子的最后一部分展示了如何保存你的工作的结果,创建一个蒙版图像,并得到MATLAB®代码的应用程序用来执行分割。

在颜色阈值中打开图像

将彩色图像读取到工作区中。

rgb = imread (“peppers.png”);

打开颜色阈值应用程序从MATLAB工具条。在应用程序选项卡,在图像处理与计算机视觉部分点击颜色阈值

将图像加载到颜色阈值应用程序,点击加载图片,然后选择从工作区加载图像。在“从工作区导入”对话框中,从工作区中选择图像,然后单击好吧

也可以使用命令行打开应用程序colorThresholder函数,指定图像的名称:colorThresholder (rgb);.您还可以获取图像在颜色阈值程序中获取实时图像

颜色阈值应用程序显示图像在选择颜色空间选项卡,用点云表示这些颜色空间中的图像:RGB、HSV、YCbCr和L * a * b *.对于基于颜色的分割,选择提供最佳颜色分离的颜色空间。使用鼠标,旋转点云表示,以查看它们是如何隔离各个颜色的。分割使用颜色阈值应用程序可以是一个迭代的过程——在你达到一个满足你需求的分割之前,尝试几个不同的颜色空间。对于本例,通过选择YCbCr颜色空间来启动该过程。

在颜色阈值应用程序中分割YCbCr图像

当你选择一个颜色空间时,应用程序会打开一个新选项卡,显示图像以及一组用于每个颜色组件和点云表示的控件。颜色控制根据颜色空间的不同而不同。对于YCbCr颜色空间,颜色阈值应用程序显示三个直方图,代表三个颜色组件:Y分量表示亮度Cb成分表示蓝-黄光谱,而Cr分量表示红绿光谱。

要探索图像,将光标移动到图像上以访问平移和缩放控件。

自动阈值

首先,利用自动阈值法对图像进行分割。因为背景颜色(紫色的布)接近统一的颜色,分割它而不是前景对象(辣椒)。属性可以将掩码反转反掩码选择。

使用徒手ROI工具定义区域。单击该按钮,并在背景上绘制一个感兴趣区域。您可以绘制多个区域。

在画出区域后,颜色阈值应用程序自动阈值的图像基于您在您绘制的区域中选择的颜色。的YCb,Cr颜色控制改变以反映分割。这种自动阈值不能清晰地分割背景和前景,特别是在前景和背景之间的下边界。在本例中,靠近图像底部的背景颜色较浅。如果您想删除已绘制的区域并重新开始,请右键单击该区域中的任何位置并选择删除徒手画的

用颜色控制优化自动阈值

要微调自动阈值,请使用颜色控件。为每一个YCb,Cr颜色控件,您可以通过拖动该直方图中的上下边界来设置值的范围。使用这些颜色控件可以显著改善前景的分割。

使用点云阈值图像颜色值

在YCbCr颜色空间中分割图像的另一种方法是在点云上绘制一个感兴趣区域,以选择一段颜色范围。

在应用程序工具条上,单击重置阈值还原到原始图像。在应用程序的右下窗格中,单击并拖动点云以旋转,直到分离出你感兴趣的阈值颜色视图。单击按钮在点云的左上角。的颜色阈值应用程序将3-D点云转换为2-D表示,并激活多边形ROI工具。在你想分割的颜色周围画一个ROI(紫色)。该方法比初始的自动阈值方法具有更好的分割效果。

在另一个颜色空间分割图像

要在另一个颜色空间分割图像,请单击新的颜色空间在应用程序工具条中。在选择颜色空间选项卡,选择HSV颜色空间。

颜色阈值应用程序创建一个新的选项卡显示HSV颜色空间的图像和颜色组件控件。在这个颜色空间里,H代表色调,年代代表饱和,V代表值。HSV颜色空间使用了一个双向旋钮H组件和两个直方图滑块年代V组件。该选项卡还包含图像中颜色的点云表示。

与前面的迭代一样,您可以使用所有相同的技术:自动阈值和交互使用颜色组件控件,包括点云。当您使用颜色控件时,您可以看到正在进行的分割。在窗格中H控件中,每次单击并拖动一个箭头来更改色调的范围。对这些控件进行试验,直到将背景和前景清晰地分离出来。您可以在创建蒙版图像后使用工具箱函数(如形态运算符)清理小的缺陷。

使用颜色阈值创建蒙版图像应用程序

这个部分的例子展示了如何在分割后创建蒙版图像。你也可以得到分割图像和MATLAB代码用于创建蒙版图像。

因为这个例子分割的是背景(紫色的布)而不是前景对象(辣椒),所以可以通过点击来交换前景和背景反掩码

查看通过单击创建的二进制掩码图像显示二进制在应用程序工具条上。

在工作区中保存蒙版图像。在蒙版工具条上,单击出口并选择导出图片

在“导出到工作区”对话框中,为二进制掩码图像指定变量名。还可以保存原输入的RGB图像和分段后的原图像。

要保存重建分割所需的MATLAB代码,单击出口并选择导出功能.颜色阈值应用程序打开MATLAB编辑器与创建分割的代码。要保存代码,单击保存在MATLAB编辑器工具条上。你可以运行这段代码,给它传递一个RGB图像,以编程方式创建相同的掩码图像。

函数[BW, maskedRGBImage] = createMask (RGB)%createMask阈值RGB图像使用自动生成的代码从colorThresholder应用程序。% [BW,MASKEDRGBIMAGE] = createMask(RGB)阈值图像RGB使用%从colorThresholder应用程序自动生成的代码中设置的每个颜色空间通道的最小/最大值% App,得到二进制掩码BW和合成图像maskedRGBImage,%表示掩码BW下的原始RGB图像值。%自动生成由colorThresholder应用于2016年6月22日%------------------------------------------------------%转换RGB图像到选择的颜色空间I = rgb2hsv (RGB);%根据直方图设置为通道1定义阈值channel1Min = 0.713;channel1Max = 0.911;%根据直方图设置定义通道2的阈值channel2Min = 0.049;channel2Max = 0.971;%根据直方图设置定义通道3的阈值channel3Min = 0.005;channel3Max = 1.000;%根据选择的直方图阈值创建掩码sliderBW =(我(::1)> = channel1Min) &(我(:,:1)< = channel1Max) &...(我(::2)> = channel2Min) &(我(:,:2)< = channel2Max) &...(我(::3)> = channel3Min) &(我(:,:,3)< = channel3Max);BW = sliderBW;%反掩码BW = ~ BW;基于输入图像初始化输出屏蔽图像。maskedRGBImage = RGB;将BW为假的背景像素设置为0。maskedRGBImage(repmat(~BW,[1 1 3])) = 0;结束

另请参阅