史蒂夫与MATLAB图像处理

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

在标记区域灰度的像素值

的函数bwlabelregionprops对于测量的属性非常有用的形状在一个二进制图像。有文档和产品演示例子显示如何做到这一点,和我展示了这些函数在这个博客行动好几次。

但有时我得到关于如何处理“原始”的像素值灰度图像。换句话说,假设你的过程是这样的:

  • 段灰度图像得到一个二进制图像的对象
  • 标签使用的二进制图像对象bwlabel
  • 做一些与原灰度像素值对应于每一个标记的物体吗

这篇文章是关于如何做到最后一步。让我们开始创建一些简单的示例图像。

我= imread (“coins.png”);imshow(我)
bw = im2bw(我graythresh(我));bw = imfill (bw,“黑洞”);imshow (bw)标题(阈值,有洞的)
L = bwlabel (bw);imshow (label2rgb (L, @jet,。7 7 7]))标题(“标签矩阵”)

使用的关键l处理的像素是使用regionprops得到“PixelIdxList”对于每一个标记的区域。

s = regionprops (L,“PixelIdxList”)
s = 10 x1结构体数组字段:PixelIdxList

年代是一个结构体数组。年代.PixelIdxList (k)是一个向量的线性指数k地区。您可以使用这些值指数直接进入。例如,这是第三枚硬币的平均像素值:

idx = s (3) .PixelIdxList;的意思是(我(idx))
ans = 172.8769

你也可以替换对象像素值通过索引赋值语句的左边,是这样的:

%将第四枚硬币白色和黑色5枚硬币:J =我;J (s (4) .PixelIdxList) = 255;J (s (5) .PixelIdxList) = 0;imshow (J)

这是一个循环,取代了像素值为每个硬币硬币的平均像素值:

F =我;k = 1:元素个数(s) idx = s (k) .PixelIdxList;F (idx) =意味着(我(idx));结束imshow (F)

我将完成这个问题垫在博客评论问:“我怎么能找到最大像素值在每个标签的位置区域?”Here's how to find the locations and then plot them on top of the original image. (In addition to“PixelIdxList”,我也会问regionprops“PixelList”的x和y坐标,这使该地区的每个像素)。

s = regionprops (L,“PixelIdxList”,“PixelList”);imshow (I)k = 1:元素个数(s) idx = s (k) .PixelIdxList;pixels_in_region_k =我(idx);[max_value, max_idx] = max (pixels_in_region_k);max_location = s (k)。PixelList (max_idx:);情节(max_location (1) max_location (2),‘*’)结束持有




使用MATLAB®7.4发表

|
  • 打印
  • 发送电子邮件

评论

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