【发布时间】:2016-04-28 07:47:25
【问题描述】:
我在 matlab 中有图像(矩阵),我在每个方向从矩阵中心寻找最大强度点以获得边缘。 (我使用图像的渐变,我正在寻找一个四边形)。
对于 M (n,m) 我的第一次尝试是考虑一个向量 M(1:n/2, m/2),寻找最大值并旋转图像以找到所有其他方向的所有最大值。 但是:imrotate 函数会导致很多错误(裁剪或松散),并且重建的图像与原始图像的形状不对应。
我也尝试直接在原始图像中考虑从中心到周边所有点的向量......但这并不容易!
你有解决这个问题的想法吗?我不知道 Matlab 中的任何微妙之处?
谢谢你;
我的实际代码是
s_im = size(ima, 2)/2;
ima_max = zeros(size(ima));
ima_new = zeros(size(ima));
for a=0:359
im_r = imrotate(ima, a, 'crop');
c= floor(size(im_r,1)/2);
vect_h1 = im_r(c, 1:c);
l = length(vect_h1);
[~, id_h1] = max(vect_h1(:));
[x,y] = rotatePoint([id_h1, c], [c,c], deg2rad(a-180));
ima_max(floor(y), floor(x))= 1;
ima_new(floor(y), floor(x)) = 1;
还有一个错误是计算的中心在所有图像中都不相同...
【问题讨论】:
-
不清楚您要做什么。您可以添加示例图片和您正在查找的内容的插图吗?
-
考虑图像的中心。我想从各个方向的中心找到每个向量的最大强度点。 360个向量进行360度旋转,并为每一个找到最大的位置et在原始图像中检索它
-
我想到的第一件事是将您的图像插入一个更大的用零填充的矩阵中,然后应用
imrotate -
非常感谢,我做到了,它成功了!谢谢。
标签: matlab matrix max image-rotation