我有以下图片:
我使用了以下代码:
X=imread('circle.png');
[I,J] = find(X ==0);
scatter(I,J)
...获取二进制图像的坐标(circle.png)。我得到了坐标,但是当我在散点图上绘制这些坐标时,我得到三个圆而不是一个圆。为什么会这样?
答案 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');
...我得到这张图片: