使用散点图从图像重新创建圆

时间:2016-01-19 03:20:34

标签: image matlab image-processing coordinates

我有以下图片:

enter image description here

我使用了以下代码:

X=imread('circle.png');
[I,J] = find(X ==0);
scatter(I,J)

...获取二进制图像的坐标(circle.png)。我得到了坐标,但是当我在散点图上绘制这些坐标时,我得到三个圆而不是一个圆。为什么会这样?

1 个答案:

答案 0 :(得分:0)

图像很可能是RGB而不是二进制。这意味着您有一个三个维矩阵而不是二维矩阵,其中每个切片代表图像中像素的红色,绿色或蓝色分量。

因此,如果您使用的是RGB图像,如果切入第二维和第三维组合,J坐标实际上将成为列主坐标。因此,因为您的图像是二进制的,只需提取任何一个通道并再次尝试。对于二进制图像,在您的情况下,每个RGB元组将为(0,0,0)(255,255,255)

因此,请尝试:

X=imread('circle.png');
[I,J] = find(X(:,:,1) == 0); %// Change
scatter(I,J)

直接从StackOverflow读取图像:

X = imread('http://i.stack.imgur.com/RbOPG.png');

...我得到这张图片:

enter image description here