【发布时间】:2015-10-07 12:51:27
【问题描述】:
是否可以在一个圆圈内找到一个区域的黑色像素化区域?换句话说,我想找到圆圈内 RGB 0,0,0(黑色像素)的像素数(面积)。我不想要圆圈内的白色像素(1,1,1)的区域。如果有帮助,我也有圆的半径。这是图片:
代码如下:
BW2= H(:,:) <0.45 ;%& V(:,:)<0.1;
aa=strel('disk',5);
closeBW = imclose(BW2,aa);
figure, imshow(closeBW)
imshow(closeBW)
viscircles([MYY1 MYX1], round(MYR2/2))
MYY1,MYX2,其他的值都是我的程序计算出来的。如何在我的圆圈中找到黑色像素化的区域?
【问题讨论】:
-
您可以尝试创建一个只是圆圈内像素的临时图像,然后使用 regionprops()
-
@willpower2727 我怎样才能为圆圈中的内容创建一个临时图像?
-
虽然这可能有点矫枉过正,但您可以创建一个包含圆圈内所有值的向量,然后使用
h=histogram(PTS)创建一个直方图。由于黑色和白色是仅有的两个像素值,因此您可以通过分别使用h.Values(1)和h.Values(2)查看直方图中 bin 1 和 2 的内容来获得黑色和白色像素的最终数量。如果这是问题的合理解决方案,我可以计算出其余必要的代码。 -
回复@willpower2727,您可以按照steps at this link关于创建圆的方法获取圆中的像素。一旦知道圆圈覆盖的像素,您就可以将它们复制到一个新数组中,并使用上述任一解决方案或任何数量的其他机制来获取黑白像素的计数。