找到(x, y)坐标的“白色”像素(从计算矩阵)

5视图(30天)
你好!我想确定坐标(x, y)的“白色”像素在接触一个“黑人”的像素。
例如,在细节在下面的图片中,我强调了一些像素红场。我想确定只是其中的一个像素的坐标,等等。
我想以这种方式确定像素的矩阵,但我不知道如何。
形象= imread (“image_BW.png”);
Number_Of_Rows =身高(图片);
Number_Of_Columns =宽度(图片);
灰度= 0 (Number_Of_Rows Number_Of_Columns);
行= 1:Number_Of_Rows
列= 1:Number_Of_Columns
灰度图像(行、列)=(行、列);
结束
结束
1评论
Dyuman Joshi
Dyuman Joshi 2023年2月3日
编辑:Dyuman Joshi 2023年2月3日
你想找到所有的白色像素的坐标与黑色像素或选择白色像素?
很难找到具体的指标没有任何特定的输入来区分他们从别人。
你可以找到最左侧点-
img = imread (“image_BW.png”);
jdx = 1:尺寸(img, 2)
idx = 1:尺寸(img, 1)
如果isequal (img (idx、jdx:), 255 * (1, 1, 3))
img (idx jdx:) = (255 0 0);
imshow (img)
%你可以看到一个小红点在图像
返回
结束
结束
结束

登录置评。

接受的答案

图像分析
图像分析 2023年2月3日
编辑:图像分析 2023年2月3日
您可以使用 bwperim 找到像素周长,接触黑色:
rgbImage = imread (“image_BW.png”);
如果尺寸(rgbImage, 3) = = 3
grayImage = rgb2gray (rgbImage);%需要RGB图像转换成灰度。
其他的
grayImage = rgbImage;如果它已经灰度%。
结束
掩码= grayImage > 0;%将图像转换为逻辑值sutaible图像形态
perimImage = bwperim(面具);
%找到所有边缘像素的行和列坐标
[edgeRows, edgecolumns] =找到(perimImage);
不要使用我(虚构的常数)图像变量的名称。
您还可以使用 bwboundaries 找到他们, visboundaries 来显示它们。
边界= bwboundaries(面具);
visboundaries(边界);%显示他们的形象。
或者你可以得到每个轮廓的x和y坐标(可能有几部):
%情节的边界气泡在上面的覆盖原始灰度图像
使用bwboundaries返回的坐标()%。
% bwboundaries()返回一个单元阵列,每个单元格包含对象的行/列坐标的图像。
imshow (grayImage);%可选:显示原始图像。或者你可以把二进制图像显示如果你想。
%这里就是我们每个团的边界。
边界= bwboundaries(面具);
%边界单元阵列,每个团的一个细胞。
%在每个单元是一个n除以2的坐标列表(行、列)格式。注意:没有(x, y)。
% 1列是行,或y。第2列列,或x。
numberOfBoundaries =大小(边界,1);%计算边界,所以我们可以使用它在我们的for循环
%这就是我们实际上情节中的每一个blob叠加的界限。
持有;%不要让边界吹走显示图像。
k = 1: numberOfBoundaries
thisBoundary = {k}边界;%获得这个特定的blob的边界。
x = thisBoundary (:, 2);%第2列的列,这是x。
y = thisBoundary (: 1);%第1列的行,这是y。
情节(x, y,的r -,“线宽”2);%绘制边界为红色。
结束
持有;
标题= sprintf (' % d轮廓,从bwboundaries () ',numberOfBoundaries);
字形大小= 15;
标题(标题,“字形大小”、字形大小);
轴(“上”,“图像”);%确定图像不是人为紧张因为屏幕的长宽比。

答案(1)

Sarvesh羽衣甘蓝
Sarvesh羽衣甘蓝 2023年2月3日
按我的理解你试图提取像素x, y坐标在边界上,您可以使用以下的代码行,使用的方法包括图像形态学操作,我们缩小图像使用一个结构化元素然后执行逻辑的原始图像和倒影从形态学操作来获取边界获得图像,然后使用 找到 函数来得到x, y坐标的边界像素,
清晰的
clc
我= imread (“image_BW.png”);
i = rgb2gray(我);
我= > 0;%将图像转换为逻辑值sutaible图像形态
imshow(我);
se1 = strel (“广场”5);%你也可以尝试减少大小的结构元素得到薄的境界
er_i = imerode(我se1);%执行图像使用结构化元素se1侵蚀
次要情节311年;
imshow(我);
次要情节312年;
imshow (er_i);
i_boundary = ~ er_i &我;%只在接触黑色像素的边界了
次要情节313年;
imshow (i_boundary);
(x, y) =找到(i_boundary);
向量将包含x和y坐标上的白色像素边界例如x (i)和y (i)将一个特定的白色像素的坐标。
找到的文档功能和imerode功能下面给出

下载188bet金宝搏


释放

R2021b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!