#matlab #image-processing #entropy #probability-density
#matlab #обработка изображений #энтропия #плотность вероятности
Вопрос:
Я работаю над проектом по классификации изображений с использованием взаимной информации. Это требует от меня использования распределения вероятностей цветного изображения, либо я хочу вычислить взаимную информацию, либо расхождение Кулбека Лейблера в Matlab. Кто-нибудь может мне помочь в этом? Я вычислил энтропию цветного изображения как:
I = imread('s1.png');
% rgb_columns = reshape(rgb, [], 3);
% %Change RGB matrices to a single matrix of color indices.
% %Removes the third dimension from the pixel intensity matrix.
Color_ind=double(I(:,:,1)).*256^2 double(I(:,:,2).*256) double(I(:,:,3));
disp(size(Color_ind));
% Finding unique elements in the matrix and find their length
unique_ind=unique(Color_ind);
unique_len=length(unique_ind);
%Pre-allocate space for the vector that will hold the number of entries
%for each unique color
color_count_prob=zeros(unique_len,1);
%Count the number of each occurrence of each unique color index in the
%original matrix.
for i = 1:unique_len
color_count_prob(i)=(length(find(unique_ind(i)==Color_ind)))/(2073600);
end
en_sum=0;
for i = 1:unique_len
en_sum = en_sum log2(color_count_prob(i));
end
en = -en_sum;
Комментарии:
1. Опубликуйте некоторый код и покажите нам, что вы пробовали. Добро пожаловать в stack overflow
2. Я выполнил вычисление энтропии изображения, но я не понимаю, как вычислить взаимную информацию и расхождение KL, поскольку для этого требуется pdf изображения. Как определить распределение вероятностей цветного изображения?
3. энтропия = сумма (pi * log2(pi)). Но вы, кажется, вычисляете это как сумму (log2 (pi))
4. как я могу использовать scipy, чтобы получить генератор распределения вероятностей с минимальным расхождением KL в python?
Ответ №1:
Для вычисления цветного изображения в формате PDF:
Сначала вам нужно преобразовать изображение в оттенки серого. Если вы настаиваете на том, чтобы оставаться в режиме RGB (или любом другом цветном режиме), вам придется сгенерировать 3 PDF-файла (по одному для каждого цветового канала) — я бы не советовал делать это для целей Kullback Liebler или взаимной информации, подойдет изображение в оттенках серого.
Во-вторых, вам нужно рассчитать распределение каждого изображения. Для этого вам нужно будет сгладить ваше изображение (преобразовать из 2D-массива в 1D-массив). Как только вы выровняете изображение, вы должны отсортировать значения. После сортировки их следует нормализовать (вы можете этого не делать, но я бы рекомендовал). После этого вы можете вывести гистограмму для изображения.
И чтобы измерить расхождение Кулбека Либлера, вам нужно:
- Измерьте энтропию на гистограммах вашего изображения. Это будет число.
- Просто вычтите значения из первого шага, и это даст вам значение расхождения Кулбека Либлера для этих двух изображений.