Как определить, имеют ли два изображения JPG одного размера более 30% разных пикселей с помощью Matlab? - PullRequest
1 голос
/ 14 июля 2010

Или есть встроенная функция, которая может выполнять именно эту работу?

1 Ответ

5 голосов
/ 14 июля 2010

Нет, я не знаю встроенной функции. Возможно, что-то может быть, но зачем им писать что-то столь простое? Почему я говорю, что это основной? Предположим, вы сделали прямое сравнение между двумя изображениями?

IM1 == IM2

Цветное изображение - это массив MxNx3, обычно состоящий из значений uint8. Так что этот тест приведет к булевому массиву MxNx3. Если все три канала одинаковы для какого-либо конкретного пикселя, то этот пиксель одинаков. Таким образом, мы применим все к третьему измерению результата выше ...

all(im1 == im2,3)

Это будет массив MxN. Теперь, сколько пикселей было одинаковым? Поскольку все возвращает логический результат, общая сумма этого результата будет считать пиксели, которые были идентичны. Простой способ сформировать общую сумму двумерного массива - это сформировать сумму суммы.

sum(sum(all(im1 == im2,3)))

Теперь вы можете сравнить это число с 30% от общего количества пикселей в изображении. Я дам вам понять, как сделать эту часть.

Привыкайте к построению решения в MATLAB с использованием базовых векторизованных строительных блоков.

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