Как я могу решить, что процент MATLAB всегда равен нулю?

#matlab #image-processing

Вопрос:

Я хочу вычислить, на сколько изображение имеет более высокую «энтропию красного канала», чем «энтропия синего канала». Я хотел получить результат в процентах. Но он всегда показывает ноль. Но я проверил случайное одно изображение, и некоторые из них удовлетворяют условию. как я могу устранить эту ошибку? Я использую MATLAB R2015b

 folder = 'F:raw-890';
filePattern = fullfile(folder, '*.png');
myFiles = dir(filePattern); % the folder inwhich ur images exists
for k = 1 : length(myFiles)
   fullFileName = fullfile(folder, myFiles(k).name);
   I= imread(fullFileName);
   Red = I(:,:,1);
   Green = I(:,:,2);
   Blue = I(:,:,3);
   %I = I(:); % Vectorization of RGB values
   p = imhist(Red); % Histogram
   p(p == 0) = [ ];% remove zero entries in p
   p = p ./ numel(I); % normalize p so that sum(p) is one.
   Er = round(-sum(p.*log2(p)),3);
   p = imhist(Blue); % Histogram
   p(p == 0) = [ ];% remove zero entries in p
   p = p ./ numel(I); % normalize p so that sum(p) is one.
   Eb = round(-sum(p.*log2(p)),3);
end
percentage = sum(Er > Eb) / numel(Er) * 100; % Percentage of images with red entropy higher than blue entropy
disp(['Percentage of images with red entropy higher than blue entropy: ' num2str(percentage)])
 

Комментарии:

1. Вы пытались отладить код? Что это за тип p ?

2. При правильном отступе вы можете сразу определить, в чем проблема: Er и Eb перезаписываются новым скалярным значением в каждой итерации цикла, но вы ожидаете, что это будут массивы в конце цикла.