0
我正在處理圖像。我在圖像上應用熵閾值,我得到了錯誤。如何解決這個錯誤????試圖訪問cmtx(1.00024,1);索引必須是正整數或邏輯
??? Attempted to access cmtx(1.00024,1); index must be a positive integer or logical."
Error in ==> file1>GABOR_Callback at 809
cmtx(fix(rt(m,n))+1,fix(rt(m,n+1))+1) = cmtx(rt(m,n)+1,rt(m+1,n+1)+1) + 1
我試圖用fix和round函數來解決這個錯誤。但是它對我有用。請有人幫助我。這裏rt是一個圖像,它是我的旋轉圖像的輸出。所以我不能改變rt圖像矩陣的值。我的熵閾值的代碼是。
[M,N] =size(rt);
cmtx = zeros(256,256);
for m = 1:M-1
for n = 1:N-1
cmtx(rt(m,n)+1,rt(m,n+1)+1) = cmtx(rt(m,n)+1,rt(m+1,n+1)+1) + 1;
end
end
scmtx = sum(cmtx(:)); prob = cmtx/scmtx;
emax = -100; for i=1:255
probA = 0;
probC = 0;
subProbA = prob(1:i,1:i);
probA = sum(subProbA(:));
HA(i) = -0.5*(probA*log2(probA+0.0000001));
subProbC = prob(i+1:256,i+1:256);
probC = sum(subProbC(:));
HC(i) = -0.5*(probC*log2(probC+0.0000001));
e1(i) = HA(i) + HC(i);
if e1(i) >= emax
emax = e1(i);
tt1 = i;
end
end
末
這裏rt是我的形象
在你的第一個代碼片段中,你只是使用修復的分配索引。你是否嘗試過使用修復這個源碼索引?你可以試試rtf = fix(rt),然後用rtf代替rt。 – grantnz
謝謝你先生,dat想法din罷工我。先生,我運行這個後,我得到一個小點作爲我的輸出......在我的熵代碼中有任何錯誤。 – vidya