[英]Find maximum intensity point from center in all directions in matlab matrix
我在matlab中有圖像(矩陣),我在每個方向上都從矩陣中心尋找最大強度點,以獲取邊緣。 (我使用圖像的漸變,正在尋找四邊形)。
對於M(n,m),我的第一個嘗試是考慮一個向量M(1:n / 2,m / 2),尋找最大值並旋轉圖像以找到所有其他方向的所有最大值。 但是:旋轉功能會導致許多錯誤(裁剪或松動),並且重建的圖像與原始圖像的形狀不符。
我還嘗試直接在原始圖像中從中心到周邊的所有點考慮向量...但這並不容易!
您有解決這個問題的想法嗎? 我不知道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;
還有一個錯誤是所有圖像中計算出的中心都不相同...
我想您可以使用improfile
獲取沿中心像素發出的光線的強度:
sz = size(ima);
X = sz(2);
Y = sz(1);
all_end_points = cat(1, [ones(1,Y); 1:Y]', ...
[1:X; Y*ones(1,X)]', ...
[X*ones(1,Y); Y:-1:1]', ...
[X:-1:1; ones(1,X)]' );
cent = repmat( [X/2 Y/2], [size(all_end_points,1), 1]);
all_profs = improfile(ima, all_end_points(:,1), all_end_points(:,2));
現在,您有了中心的所有輪廓,可以沿着每個輪廓尋找最大強度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.