Расчет показателей качества изображения - PullRequest
0 голосов
/ 09 июля 2019

Мне нужно рассчитать различные IQM, такие как MSE, PSNR, AD, NCC и т. Д. Для изображений RGB.Мой запрос: могу ли я рассчитать их после преобразования в оттенки серого?то есть используя rgb2gray?Или это необходимо для ввода изображения RGB?

Например: я рассчитываю MSE, используя

mse = immse(origImg,distImg)    %Method 1 (These images are RGB)

и

origImg = rgb2gray(origImg);    % Method 2

distImg = rgb2gray(distImg);

origImg = double(origImg);

distImg = double(distImg);

[M N] = size(origImg);

error = origImg - distImg;

MSE = sum(sum(error .* error)) / (M * N);

Но они дают разные результаты,Почему ??

Ответы [ 2 ]

1 голос
/ 09 июля 2019

В дополнение к ответу Y.AL, я просто предлагаю другой способ достижения того же результата.На мой взгляд, более интуитивный подход:

mse = mean((A(:)-B(:)).^2) %with A and B the two images to compare

A и B имеют тип данных double, если не нужно преобразовывать эти переменные.

Мы видим, чтоMSE просто вычисляет среднее значение квадрата разности каждого пикселя.

Мы можем проверить, что результат совпадает с:

%Dummy data    
A = rand(10,10,3);
B = rand(10,10,3);

%Custom vs built in MSE computation
MSE1 = mean((A(:)-B(:)).^2)
MSE2 = immse(A,B)
0 голосов
/ 09 июля 2019

Поскольку метод 1 (immse) применяет следующую формулу: immse = err = (norm(origImg(:)-distImg(:),2).^2)/numel(origImg);, тогда как метод 2 имеет не то же самое вычисление ошибки, поэтому разумно получить разные результаты.Также вы можете применять их как на RGB, так и на уровне серого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...