如何以已知角度创建矩形蒙版?

时间:2017-03-08 04:03:20

标签: matlab image-processing image-masking

我创建了一个合成图像,其中包含一个框中心的圆圈,下面是代码。

%# Create a logical image of a circle with image size specified as follows:
imageSizeY = 400;
imageSizeX = 300;

[ygv, xgv] = meshgrid(1:imageSizeY, 1:imageSizeX);

%# Next create a logical mask for the circle with specified radius and center
centerY = imageSizeY/2;
centerX = imageSizeX/2;
radius  = 100;

Img   = double( (ygv - centerY).^2 + (xgv - centerX).^2 <= radius.^2 );


%# change image labels from double to numeric
for ii = 1:numel(Img)

    if Img(ii) == 0
        Img(ii) = 2;  %change label from 0 to 2
    end

end

%# plot image
RI = imref2d(size(Img),[0 size(Img, 2)],[0 size(Img, 1)]);
figure, imshow(Img, RI, [], 'InitialMagnification','fit');  

现在,我需要在图像上从上到下创建一个矩形蒙版(标签== 3,行/列尺寸:1 by imageSizeX),并且与圆的边缘成已知角度(参见附图) )。另外,如何通过imageSizeX?使矩形比1厚?作为另一种选择,我希望尝试让矩形停在第350栏。最后,任何想法如何改进分辨率?我的意思是可以在增加/降低分辨率的同时保持图像大小相同。

enter image description here

我不知道如何解决这个问题。我需要任何帮助/意见/建议。非常感谢!。

1 个答案:

答案 0 :(得分:0)

您可以使用cos功能查找具有正确角度x的{​​{1}}坐标。 首先请注意,与phi顶点相交的半径之间的角度与phi的角度为:

theta=pi-phi

并且该顶点的x-axis坐标由

给出

enter image description here

所以掩码只需要将该行设置为3。

示例:

x

生成的图像如下所示: graph of circle with rectangular bar

请注意,phi = 45; % Desired angle in degrees width = 350; % Desired width in pixels height = 50; % Desired height of bar in pixels theta = pi-phi*pi/180; % The radius angle x = centerX + round(radius*cos(theta)); % Find the nearest row x0 = max(1, x-height); % Find where to start the bar Img(x0:x,1:width)=3; 函数用于处理条形厚度超出图像顶部的情况。

关于分辨率,image resolution取决于您创建的矩阵的大小。在您的示例中(400,300)。如果您想要更高分辨率,只需增加这些数字。但是,如果您想将分辨率链接到更高的DPI(每英寸点数),那么每个物理英寸中的像素数更多,您可以使用&#34;导出设置&#34;图max菜单中的窗口。

此处显示: Screenshot of Export Setup dialog