主要内容

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

方法分割图像并创建二进制掩码图像颜色阈值这个例子根据颜色值将前景(辣椒)从背景(紫色布)中分割出来。

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

本例的最后一部分展示了如何保存工作结果,创建掩码图像,并获得应用程序用于执行分割的MATLAB®代码。

在颜色阈值器中打开图像

将彩色图像读入工作区。

RGB = imread(“peppers.png”);

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

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

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

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

在Color Thresholder App中分割YCbCr图像

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

若要浏览图像,请将光标移动到图像上以访问平移和缩放控件。

自动阈值

首先,使用自动阈值分割图像。因为背景色(紫色布)接近统一的颜色,分割它而不是前景对象(辣椒)。方法始终可以反转蒙版反掩码选择。

使用手绘ROI工具定义一个区域。点击按钮在图像的左上角,并在背景上绘制一个ROI。你可以画多个区域。

绘制区域后,将颜色阈值App会根据你在绘制区域中选择的颜色自动阈值图像。的YCb,Cr颜色控制改变以反映分割。这种自动阈值分割不会对背景和前景进行清晰的分割,特别是在前景和背景之间的下边界。对于本例,图像底部附近的背景颜色较浅。如果您想删除您绘制的区域并重新开始,请右键单击该区域的任何位置并选择删除徒手画的

使用颜色控件改进自动阈值

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

使用点云的阈值图像颜色值

在YCbCr颜色空间中分割图像的另一种方法是在点云上绘制ROI以选择一个颜色范围。

在应用程序工具条上,单击重置阈值恢复到原始图像。在应用程序的右下角窗格中,单击并拖动点云旋转,直到分离出对阈值感兴趣的颜色的视图。单击按钮在点云的左上角。的颜色阈值app将3-D点云转换为2-D表示并激活多边形ROI工具。围绕要分割的颜色(紫色)绘制ROI。该方法可以比初始的自动阈值分割方法更好地分割。

另一种颜色空间中的分段图像

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

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

与前面的迭代一样,您可以使用所有相同的技术:自动阈值化和颜色组件控件(包括点云)的交互式使用。当您使用颜色控件时,您可以看到正在进行的分割。的窗格中H控件,通过一次单击并拖动一个箭头来更改色调的范围。实验控制,直到你有一个干净的分离背景和前景。在创建掩码图像后,可以使用工具箱函数(如形态运算符)清除小的缺陷。

使用颜色阈值应用程序创建掩码图像

这部分示例展示了如何在分割后创建掩码图像。您还可以获得分割图像和用于创建掩码图像的MATLAB代码。

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

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

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

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

若要保存重建分割所需的MATLAB代码,请单击出口并选择导出功能.的颜色阈值app打开MATLAB编辑器,其中包含创建分割的代码。单击,保存代码保存在MATLAB编辑器工具条上。您可以运行这段代码,向其传递一个RGB图像,以编程方式创建相同的掩码图像。

函数[BW,maskedRGBImage] = createMask(RGB)使用colorThresholder应用程序自动生成的代码来阈值RGB图像。% [BW,MASKEDRGBIMAGE] = createMask(RGB) thresholds image RGB using%从colorThresholder App自动生成的代码颜色空间中每个通道的最小/最大值百分比设置在% App,结果是一个二进制掩码BW和一个合成图像maskedRGBImage,%,显示掩码BW下的原始RGB图像值。2016年6月22日由colorThresholder app自动生成%------------------------------------------------------将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为假的背景像素为零。maskedRGBImage(repmat(~BW,[1 1 3])) = 0;结束

另请参阅