【发布时间】:2020-04-27 00:55:18
【问题描述】:
我需要创建一个二进制掩码。我有一些坐标,我使这些坐标在那个区域内等于 1,背景等于零。
这是我所做的,但问题是 ROI 位于不正确的位置并且位于图像的右下角。如果有人能指出正确的方向,我将不胜感激。
function [X,Y, BW] = Create_mask(X,Y,im)
X = round(X);
Y = round(Y);
X ( X < 1 ) = 1;
Y ( Y < 1 ) = 1;
BW = im > 255;
for p = 1:length(X)
BW(Y(p),X(p)) = 1;
end
for n = 0:(1/round(sqrt((X(end)-X(1))^2 + (Y(end)-Y(1))^2 ))):1
xn = round(X(1) +(X(end) - X(1))*n);
yn = round(Y(1) +(Y(end) - Y(1))*n);
BW(yn,xn) = 1;
end
se = strel('disk',10);
BW = imclose(BW,se);
BW = imdilate(BW,se);
BW = imfill(BW,'holes');
im( im < 255 ) = 0;
im = imclose(im,se);
BW = BW * 255;
BW = im2uint8(BW);
% BW = imresize(BW, [256 256],'nearest');
figure;
imshow(BW);
% close all;
end
这是函数的输出:
我期待与这张图片相似。这不是确切的解决方案,但它显示了我的期望。
X and Y coordinates are attached here,第一个列是 X,第二个是 Y。
【问题讨论】:
-
p上的循环是正确的。我不知道第二个循环应该做什么。如果您的结果与您的期望不符,也许您的期望是错误的?你用来生成你展示的图形的输入是什么?你期望什么输出?所有这些都将有助于回答您的问题。 -
@CrisLuengo 我编辑了问题以添加更多信息。
-
再一次,第一个循环是正确的,它设置了 X 和 Y 给定的像素。X 和 Y 是否包含正确的数据是完全不同的。第二个循环还需要解释,我不明白它应该做什么。你试过把它排除在外吗?
-
你的坐标系和图像是什么关系?例如你的
[X(1) Y(1)]是[671.25 622.25]。是指像素数[671 622]吗? -
抱歉没有尽快回复。是的,它指的是像素数[671 622]。
标签: matlab matlab-figure mask