史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

* - b *飞机徒手分割

今天我回到检查m&m的这张照片:

url =“https://blogs.mathworks.com/images/steve/2010/mms.jpg”;rgb = imread (url);imshow (rgb)

以前我给如何将像素颜色到L * a * b *空间以及如何计算一个二维直方图的*和b *颜色组件:

现在我想分割图像的基础上的一个斑点在这个柱状图。我使用imfreehand画在留下斑点。我不能直接显示这里的交互操作,但这里有一个屏幕截图:

这是我以前画的代码的形状和轮廓的坐标:

h = imfreehand (gca);%画出形状使用鼠标ab = getPosition (h);

我存储P-by-2 * - b *坐标的矩阵MAT-file所以我可以复制这篇文章中的结果。这里的代码复制这个MAT-file在线位置到一个临时位置然后装入MATLAB。

matfile_url =“https://blogs.mathworks.com/images/steve/2011/freehand_segment.mat”;temp_matfile = [tempname“.mat”];urlwrite (matfile_url temp_matfile);s =负载(temp_matfile);删除(temp_matfile)

这是最初几个保存* - b *值:

:s.ab (1:5)
ans = -71.5173 65.6792 -70.9335 65.6792 -70.9335 65.0954 -70.3497 64.5116 -69.7659 63.9277

现在我想问一个问题,“原始图像像素值有一个* - b *值属于这个形状吗?”I'll answer the question usinginpolygon

实验室= lab2double (applycform (rgb makecform (“srgb2lab”)));一个=实验室(:,:,2);b =实验室(:,:,3);在= inpolygon (a, b, s.ab (: 1), s.ab (:, 2));imshow(中)

看起来很有希望,但是我想想象这个结果叠加到原始图像。要做到这一点,我将填入洞,发现结果的周长,周长变厚一点,让它更容易看到,然后覆盖在黑色的。(注意:imoverlay不是图像处理工具箱的一部分。你可以下载它MATLAB中央文件交换)。

in_filled = imfill (,“黑洞”);in_filled_perimeter = bwperim (in_filled);in_filled_perimeter_thickened = imdilate (in_filled_perimeter (3、3));rgb2 = imoverlay (rgb、in_filled_perimeter_thickened [0 0 0]);imshow (rgb2)

不坏!看起来我们发现所有的绿色m&m巧克力豆。

有一些事情我想尝试用这张照片之前给它休息。我认为下次我将看一个如何实现一个近邻分类器。




使用MATLAB®7.11发表

|
  • 打印

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。