簡體   English   中英

在Matlab矩陣中從各個方向的中心找出最大強度點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM