【问题标题】:Finding the area of the black spots in a circle MATLAB求圆中黑点的面积MATLAB
【发布时间】: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关于创建圆的方法获取圆中的像素。一旦知道圆圈覆盖的像素,您就可以将它们复制到一个新数组中,并使用上述任一解决方案或任何数量的其他机制来获取黑白像素的计数。

标签: matlab image-processing


【解决方案1】:

这是一个想法:

1) 计算原始图像中黑色像素的总数(我们称之为A)。

2) 复制该图像(我们称之为B)并将圆圈内的所有像素替换为白色。为此,请创建一个二进制掩码。 (见下文)

3) 计算该图像中黑色像素的总数(即B)。

4) 减去两个值。这应该会给你圆圈内黑色像素的数量。

示例代码:我使用了我计算机上的一个虚拟图像,并使用来自imellipsecreateMask 方法创建了一个逻辑掩码。这看起来很复杂,但在你的情况下,因为你有圆的中心位置和半径,你可以像我一样直接创建你的面具,或者查看this question/answer。

创建蒙版后,使用find 获取蒙版的白色像素(即全部)的线性索引,将原始图像圆圈中的像素替换为白色像素,您可以使用它来计算黑色像素的差异。

clc;clear;close all
A = im2bw(imread('TestCircle.png'));

imshow(A)
Center = [160 120];
Radius = 60;

%// In your case:
% Center = [MYY1 MYX1];
% Radius = round(MYR2/2);

%// Get sum in original image
TotalBlack_A = sum(sum(~A))

e = imellipse(gca, [Center(1) Center(2) Radius Radius]);

%// Create the mask
ROI = createMask(e);

%// Find white pixels
white_id = find(ROI);

%// Duplicate original image
B = A;

%// Replace only those pixels in the ROI with white
B(white_id) = 1;

%// Get new sum
NewBlack_B = sum(sum(~B))

%// Result!
BlackInRoi = TotalBlack_A - NewBlack_B

在这种情况下,我得到以下输出:

TotalBlack_A =

      158852


NewBlack_B =

      156799


BlackInRoi =

        2053

对于这个输入图像:

【讨论】:

    猜你喜欢
    • 2013-09-20
    • 2023-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    相关资源
    最近更新 更多