Гистограмма - индекс должен быть положительным целым или логическим

Я делаю нормализацию гистограммы. Когда я пытаюсь с другим изображением lena256.bmpкод работает. Но когда я пытаюсь с другим изображением, он покажет ошибку:

Попытка доступа; Индекс должен быть положительным целым числом или логическим.
Ошибка в test2 (строка 10)
Histo(a(n,m)+1)=Histo(a(n,m)+1)+1;

Вот код:

a = dicomread('011fp5_256.dcm');
a = double(a);  
a=a/max(a(:)); 
figure; imshow(a);
figure; imhist(a); 
[N, M] = size(a);  
Histo(1:256) = 0;   
for n = 1 : N   
    for m = 1 : M
        Histo(a(n,m)+1) = Histo(a(n,m)+1)+1;  
    end
end
Histo = Histo/(N*M);
figure; plot(Histo);

1 ответ

Решение

Индекс матрицы не может быть десятичным значением, поэтому вам необходимо a(n,m) до ближайшего целочисленного значения.

a = dicomread('CT-MONO2-16-ankle.dcm');
a = double(a);  
a=a/max(a(:)); 
figure; imshow(a);
figure; imhist(a); 
[N, M] = size(a);  
Histo(1:256) = 0;   
for n = 1 : N   
    for m = 1 : M
        if a(n,m)+1 ~= floor(a(n,m)+1)%I use this code for find the error
            disp(a(n,m)+1);
        end
        ind = floor(a(n,m)+1);% apprx. to the nearest integer.
        Histo(ind) = Histo(ind)+1;  
    end
end
Histo = Histo/(N*M);
figure; plot(Histo);
Другие вопросы по тегам