如何计算区域内像素的数量

10次浏览(最近30天)
马卡雷纳·桑蒂兰
马卡雷纳·桑蒂兰 2021年5月15日
评论道: 图像分析员 2021年5月18日
你好
我有这个图像,我想做的就是计算一个圆形区域内的像素数。我试着以交互方式选择ROI,现在我有一个蒙版图像,在我感兴趣的区域周围全是黑色,我仍然不确定如何找到像素数。我想如果我选择了那个区域,我就可以使用numel函数来获得像素数,但它返回整个图像的像素数,与原始图像的像素数相同。。。
我在这里展示的是原始图像,周围有一个圆圈(用油漆制作的,因为它太复杂了,无法显示我用matlab做的,这让我不能上传多个图像)
我花了几个小时在这上面,阅读了所有关于分割、ROI、像素等的文章,但没有任何帮助……有人能给我指出正确的方向吗?我觉得这是一项简单的任务,但到处都没有关于它的有用信息。
另一个问题…我的图像必须是二进制还是灰度才能进行这些分析?我的原始图像是tif,但我根据我在一些文章中读到的内容转换为二进制。
谢谢!

答复(2)

图像分析员
图像分析员 2021年5月15日
有两种方法(至少)。因为在圆的周围有一个黑色/0/假的二值图像,在圆的ROI中有一个白色/1/真的二值图像,所以可以这样做
面积1=面积(遮罩)%根据算法计算“分数”像素。
区域2=nnz(遮罩);%对整(整数)像素计数
%使用Regionprops
道具=区域道具(面具、,“区域”);
面积= props.Area;%统计整(整)像素。
只要您的代码使用描述性变量名进行了很好的注释,我怀疑它对您的代码来说太复杂了 (至少)。
您可以附加多个图像,但必须一次插入一个图像。点击图片图标,选择图片。然后再次点击并插入第二张图片。
5个评论
图像分析员
图像分析员 2021年5月18日
您可以使用nnz(),就像我向您展示的那样,
numPixels=nnz(灰度图像);
或者你可以用你建议的更复杂的方法来做
numPixels = nummel (grayImage) - sum(sum(grayImage == 0));

登录评论。


为副总经理
为副总经理 2021年5月15日
编辑:为副总经理 2021年5月15日
除了Image Analyst建议的方法,我认为如果您使用圆形roi对象,还有另一种可能性。
一个= imread (“摄影师,tif”);
imshow(A);
c = drawcircle ();%创建一个圆形roi对象作为示例
%如果roi对象确实是一个圆,您可以
a1 =π* c。半径^ 2
7评论
为副总经理
为副总经理 2021年5月17日
您可以先放大图像,然后在您准备好时发出drawcircle()命令。如果想在脚本中执行此操作,可以使用input()调用来暂停脚本,直到准备好继续。类似的
一个= imread (“摄影师,tif”);
imshow(A);
输入('放大图像,准备好后按enter键');
c = drawcircle ();

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!