2010-11-29 5 views
0

Как обрабатывается изображение?Обработка изображений

Я хочу сравнить два изображения и определить различия между ними. Как определить разницу между двумя взятыми пикселями разных изображений?

+0

Какой язык, платформа? Используете ли вы инструмент для хруста, например Matlab или IDL? – DarenW 2010-11-29 15:27:12

+0

Вы можете попробовать эту ссылку для некоторых указателей http://stackoverflow.com/q/23931/5195 – vtbose 2010-11-29 15:44:20

+1

Насколько отличаются изображения? структурно ли они одинаковы (например, одно изображение, разные компрессоры), разные углы одного и того же предмета или совершенно разные? – misha 2010-11-29 23:53:11

ответ

2

Сведения, зависят от языка вы используете, но в целом это что-то вроде это работает:

Каждое изображение обрабатывается программно как двухмерного массива. Таким образом, чтобы найти разницу в значениях в одном пикселе (назовите его x, y) для двух разных изображений, вы сделаете что-то вроде этого:

diff = image1 [x] [y] - image2 [x] [y]

Есть некоторые детали реализации, о которых вы должны опасаться (например, различие будет подписано), но это основная идея.

Если вы упомянули, с каким языком вы работаете, я могу предложить несколько советов о том, как открыть изображение, чтобы его можно рассматривать как массив.

1

Не просто добавьте отличия от ответа 1, либо положительные и отрицательные различия будут отменены! Вам нужно суммировать квадраты различий или их абсолютные значения. Вы также можете рассмотреть возможность умножения пар пикселей и деления на их сумму (корреляцию).

Все три из этих методов теперь технически правильны, но они все равно будут далеки от практически полезной. Не удивляйтесь, обнаруживая меньшую разницу между двумя совершенно несвязанными изображениями, чем, скажем, два изображения одного и того же объекта с немного другим освещением.

0

Случайный выбор пикселей и проверка размера изображения. если они одинаковы, вы можете предположить, что они идентичны.

1

«Как выполняется обработка изображений?»
Ans: В зависимости от того, какую обработку вы хотите сделать. Есть сотни операций, которые вы могли бы сделать при обработке изображений, каждый из которых может иметь совершенно другой подход, единственное, что обычно используется для чтения и хранения данных пикселей.

«Я хочу сравнить два изображения и определить различия между ними. Как определить разницу между двумя взятыми пикселями разных изображений?»

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

0

Вот пример обработки изображений, который я сделал пару недель назад.

http://keshavsaharia.com/2011/03/17/theres-waldo-2/

Он построен в Mathematica, и занимает Где Уолдо головоломки и использует довольно простые методы обработки изображений, чтобы найти Вальдо.

Обработка изображений - довольно простая концепция. Он почти полностью основан на выборе отдельных пикселей и применении преобразований к изображению в целом на основе числовых свойств значений пикселей по отношению к другим значениям пикселей или к заданному пороговому значению.

Mathematica - отличный инструмент для обработки изображений, как и Matlab и Python (если вы ищете решение python, проверьте PIL). Библиотеки обработки изображений доступны практически для всех языков программирования. На C++ есть EasyBMP, Java имеет множество инструментов для создания изображений, и каждый язык имеет свой собственный набор уникальных методологий. Выберите язык, основанный на вашем приложении.

0

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

Скажем, сравнение изображений по-прежнему остается открытой проблемой исследования и связано с задачей создания изображений.

Если вам нужно более подробное сравнение изображений, вы можете попробовать расширение Rapidminer with IMMI, которое включает в себя несколько продвинутых методов сравнения изображений.

0

Обработка изображений - это массивное поле, поэтому я не думаю, что какой-либо один ответ здесь научит вас всему, что нужно знать об обработке изображений. Есть много отличных источников и лекций, разбросанных по всему Интернету, из которых вы можете узнать тонны информации. Если вы хотите получить хорошую книгу для обработки сигнала (сигнал соответствует практически любому типу данных: свет, звук, изображение и т. Д. И т. Д.), Который охватывает огромное количество методов обработки сигналов, вы можете узнать Signals and Systems.

Но в противном случае, если вы просто хотите изучить базовые процессы, которые могут быть применены к изображениям, проверьте язык обработки (например, jaboston) и его учебники/учебные книги, поскольку он по существу предназначен для визуальных художников и делает обработку изображений намного меньше трудоемкой (синтаксической) задачей, чем другие языки: http://processing.org/.

И у Эрриха есть право на это - используйте эвклидовое расстояние, чтобы определить разницу между двумя пикселями.

0

Сходство изображений - непростая задача и по-прежнему остается открытой задачей исследования. Сравнение пикселей на пиксель обычно не дает хороших результатов и в то же время довольно трудоемкое.

Одним из подходов является использование Rapidminer (инструмент с открытым исходным кодом). Radpiminer (широко используемая платформа для обработки данных, http://rapid-i.com) с плагином IMMI (расширение IMAGE MIning, http://splab.cz/immi) реализует аналогичные методы и может выполнять некоторые нетривиальные измерения подобия.

Смежные вопросы