Сравнивая два изображения как идентичные?
Это может быть легко, но я все еще немного борюсь. Как сравнить два изображения, если я хочу узнать, идентичны ли они? Скажи, что у меня есть изображение 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 для обоих файлов и сравнить их. Если контрольные суммы одинаковы, то файлы совпадают, поэтому изображения должны быть одинаковыми.