Сравнивая два изображения как идентичные?

Это может быть легко, но я все еще немного борюсь. Как сравнить два изображения, если я хочу узнать, идентичны ли они? Скажи, что у меня есть изображение A и и изображение B Я хочу сделать что-то вроде

if ( A == B ) ...

но это не работает.

2 ответа

Решение

Я думаю, что вам нужно немного более четко указать, что вы подразумеваете под идентичным. В рамках анализа изображений в DigitalMicrograph это может быть (например):

1) Идентичный файл на диске.

На это ответили другие. Но для простоты - если изображение открыто в DM, вы можете узнать, с каким "файлом" оно связано, с помощью следующего кода:

image img := GetFrontImage()
imageDocument doc = img.ImageGetOrCreateImageDocument()
OKDialog("--> "+doc.ImageDocumentGetCurrentFile())

Обратите внимание, что файлы на диске связаны с изображениями, а не изображениями.

2) Одинаковые значения пикселей во всех пикселях

Просто сравните сумму разницы в изображениях!

image A
image B
if ( 0 == sum(A-B) ) OKDialog( "Identical!" )

Код предполагает, что оба изображения имеют одинаковый тип, но вы можете проверять типы отдельно.

3) идентичный объект памяти

У вас может быть несколько переменных, относящихся к одному и тому же "изображению", то есть у вас есть одно изображение в качестве локальной переменной, а затем перебираете список изображений, чтобы идентифицировать это изображение в списке. Для этого вы можете использовать либо imageLabel, либо imageID. Любое изображение в памяти присваивается каждому из них автоматически. Хотя imageLabels используются повторно, когда они становятся свободными, идентификаторы imageID монотонно увеличиваются с момента запуска приложения (начиная с 1). Я думаю, что imageID лучше использовать в целом.

image A
image B
if ( A.ImageGetLabel() == B.ImageGetLabel() ) OKDialog( "Identical!" )
if ( A.ImageGetID() == B.ImageGetID() ) OKDialog( "Identical!" )

4) Изображение является определенным "уникальным" изображением, но оно было сохранено и открыто снова.

Типичным сценарием здесь являются обзорные изображения, связанные с данными. Возможно, вы захотите открыть данные и изображение опроса и проверить, является ли оно "правильным" изображением опроса. Для этого есть специальный скрипт-объект под названием "Global Image ID", информацию о котором вы найдете в разделе справки F1 в разделе "Объекты". Это похоже на контрольную сумму, но не совсем одно. Этот идентификатор состоит из 4 длинных значений, которые создаются при создании изображения и никогда не изменяются впоследствии. (Таким образом, изменение значения или тега данных изображения НЕ приведет к изменению этого глобального идентификатора.) Основное отличие от идентификатора imageID выше заключается в том, что глобальный идентификатор сохраняется при сохранении и загрузке изображения.

Глобальный идентификатор изображения

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

Другие вопросы по тегам