在标记区域灰度的像素值
的函数bwlabel和regionprops对于测量的属性非常有用的形状在一个二进制图像。有文档和产品演示例子显示如何做到这一点,和我展示了这些函数在这个博客行动好几次。
但有时我得到关于如何处理“原始”的像素值灰度图像。换句话说,假设你的过程是这样的:
- 段灰度图像得到一个二进制图像的对象
- 标签使用的二进制图像对象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),‘*’)结束持有从
评论
留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。