График среднеквадратичной ошибки [РЕДАКТИРОВАТЬ] - PullRequest
1 голос
/ 18 марта 2011

Если это формула для MSE для RGB-изображений A, B одинакового размера 256 * 200, то как получить линейный график для каждого пикселя с осью x, представляющей пиксели, и осью y, представляющей значения MSE

MSE = изменить форму (среднее (среднее ((двойной (A) - двойной (B)). ^ 2,2), 1), [1,3])

Есть только два изображения A, B. График должен иллюстрировать изменение между каждым пикселем A и B, что подразумевается под MSE.

1 Ответ

1 голос
/ 18 марта 2011

Если вы хотите отобразить изменения «между каждым пикселем», то то, что вы показываете, больше не означает квадратов ошибок - усреднение не происходит. (Если вы не намерены усреднять значения по всем трем цветам, но я не рекомендую: изменения в R, G, B не одинаково заметны для зрительной системы человека. Если вы действительно должны это сделать, вы можете взвесить их скажем, 2: 4: 1 для чего-то более репрезентативного, но это все еще нерегулярно и вряд ли даст очень точное представление о том, какие различия будут выглядеть самыми большими.)

Конечно, вполне разумно хотеть видеть ошибки на пиксель, но я бы не рекомендовал использовать линейный график для их отображения; это скорее сбивает с толку, чем информативно. Скорее отобразите их как изображение:

errs = (double(A)-double(B)).^2;
image(errs / max(errs(:)));
axis image;

, который вы можете затем сравнить на глаз с A и B, чтобы увидеть, какие области / особенности / ... изображения соответствуют худшим ошибкам. Яркость и цвет каждого пикселя указывают количество ошибок и то, как они распределяются по плоскостям R, G и B.

С другой стороны, возможно, что вам действительно нужно, это среднеквадратическая ошибка по отдельным строкам или столбцам изображения. В этом случае после создания errs, как указано выше, используйте mean для вычисления значения строки или столбца; это даст вам изображение размером 256 на 1 на 3 или изображение 1 на 200 на 3; теперь я бы предложил построить кривые R, G, B отдельно, если вы (возможно, глупо, на мой взгляд, как упоминалось выше) не настаиваете на усреднении плоскостей.

row_errs = mean(errs,2); % this is now of size [n,1,3]

сейчас row_errs(:,:,1) - это вектор красных ошибок MS-между строками, row_errs(:,:,2) - вектор зеленых ошибок MS-между строками и т. Д. Вы можете передать их в plot.

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