我正在绘制一个正方形图像,但由于我的相机从圆形结构中查看,我希望图像看起来也是圆形的.所以要做到这一点,我只是想为图像创建一个掩码(基本上创建一个矩阵,并通过掩码将我的数据相乘,所以如果我想保留我的图像,我乘以一,如果我想要那个部分图像变为黑色,我乘以0).
我不确定制作一个代表圆形开口的矩阵的最佳方法.我只是希望圆圈内的每个元素都是"1",圆圈外的每个元素都是"0",这样我就可以相应地为我的图像着色.我正在考虑做一个for循环,但我希望有一个更快的方法来做到这一点.所以......我需要的是:
我的尝试
mask = zeros(1280,720)
for i = 1:1280
for j = 1:720
if i + j > 640 && i + j < 1360
mask(i,j) = 1;
end
end
end
Run Code Online (Sandbox Code Playgroud)
以上显然不起作用,我需要更好地看一下,以确定何时添加1 = P的更好的等式,但理想情况下我不想使用for循环
谢谢,如果有什么不清楚,请告诉我!
Pet*_*erM 10
@kol的回答看起来很正确.您可以使用meshgrid函数使用矢量化代码执行此操作.
width = 1280;
height = 720;
radius = 360;
centerW = width/2;
centerH = height/2;
[W,H] = meshgrid(1:width,1:height);
mask = ((W-centerW).^2 + (H-centerH).^2) < radius^2;
Run Code Online (Sandbox Code Playgroud)