Я работаю с изображением. и я применяю энтропийное пороговое значение на изображении, и я получаю ошибку. как решить эту ошибку???? Попытка получить доступ к 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
Я попытался решить эту ошибку, используя функцию исправления и округления. но это работает для меня. Кто-нибудь, пожалуйста, помогите мне. здесь 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
конечного
здесь к.т. мой образ
В вашем первом фрагменте кода вы используете исправление для индексов присваивания. Пробовали ли вы исправить исходные индексы? Вы можете попробовать rtf = fix (rt), а затем просто использовать rtf вместо rt. – grantnz
спасибо, сэр, эта идея вообще ударила меня. и сэр, после того как я запустил это, я получу небольшую точку в качестве моего вывода ... есть ли какая-то ошибка в моем энтропийном коде. – vidya