Взаимная информация, Кульбак-Лейблер Расхождение между двумя цветными изображениями

Я работаю над проектом по классификации изображений с использованием взаимной информации. Это требует, чтобы я использовал распределение вероятностей цветного изображения, либо я хочу вычислить взаимную информацию, либо дивергенцию Кульбака-Лейблера в 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;

person Karn Srivastava    schedule 30.03.2019    source источник
comment
Разместите код и покажите нам, что вы пробовали. Добро пожаловать в stack overflow   -  person Jon    schedule 30.03.2019
comment
Я выполнил расчет энтропии изображения, но не понимаю, как рассчитать взаимную информацию и расхождение KL, поскольку для этого требуется PDF-файл изображения. Как определить распределение вероятностей цветного изображения?   -  person Karn Srivastava    schedule 30.03.2019
comment
энтропия = Сумма (пи * log2 (пи)). Но вы, кажется, вычисляете его как Sum (log2 (pi))   -  person koshy george    schedule 02.04.2019
comment
как я могу использовать scipy, чтобы получить генератор распределения вероятностей с минимальным расхождением KL в Python?   -  person yishairasowsky    schedule 18.05.2021


Ответы (1)


Для расчета цветного изображения в PDF:

Во-первых, вам нужно преобразовать изображение в оттенки серого. Если вы настаиваете на том, чтобы оставаться в режиме RGB (или любом другом цветном режиме), вам придется сгенерировать 3 PDF-файла (по одному для каждого цветового канала) - я бы не предлагал делать это для целей Kullback Liebler или Mutual Information, изображение в оттенках серого будет делать.

Во-вторых, вам нужно рассчитать распределение каждого изображения. Для этого вам нужно будет сгладить изображение (преобразовать из 2D-массива в 1D-массив). После того, как вы сгладите изображение, вам следует отсортировать значения. После сортировки вы должны нормализовать их (вы можете не делать этого, но рекомендуете). После этого вы можете построить гистограмму для изображения.

А чтобы измерить дивергенцию Кульбака-Либлера, вам понадобятся:

  1. Измерьте энтропию на гистограммах изображений. Это будет число.
  2. Просто вычтите значения из первого шага, и вы получите значение расхождения Кульбака-Либлера для этих двух изображений.
person Amir Hashempour    schedule 12.08.2020