2
我想知道這行代碼是如何工作的圖像處理代碼
corners = (m==n)&(n>threshold);
這是在一塊我使用的代碼,我想了解它。基本上,m和n都是相同大小的圖像,「閾值」是一個十進制值。
爲了理解上下文,一段代碼如下。
% compute the m cornerness measure
m = (ix2s.*iy2s - ixys.^2) - 0.04*(ix2s+iy2s).^2;
% perform non-maximal suppression using ordfilt2
n = ordfilt2(m, radius^2, ones([radius radius]));
% display corner spots
corners = (m==n)&(n>threshold);
% superimpose corners
Q = corners+im;
Q(Q>1) = 1;
C = repmat(im,[1 1 3]);
C(:,:,1) = Q;
所以只是要分解它, m == n 檢查m是否與數組中的每個槽m(:, :)和n(:, :)等價,如果爲真則標記爲1。這隻會發生在局部最大值,因爲這是n相對於m的定義。 然後檢查以查看等效值是否大於閾值,如果也是這樣,則返回1到角落。 以上是否正確?關於拐角的尺寸,MATLAB會自動給它m和n的尺寸,是否正確?如果m和n是不同的值呢?我猜這個聲明會無效? – mathjacks 2012-02-22 19:57:11
如果我理解正確,你的解釋是正確的。程序在第一行計算m,第二行計算n,外部參數是半徑(局部區域的大小)和閾值(或多或少 - 我們在誤報和誤報之間的偏好水平)。 – Ofir 2012-02-23 07:21:34