Перейти к содержанию
Kreator

Сравнение растров PAV_Compare_Image

Рекомендуемые сообщения

Сравнение растров v 0.1.5

PAV_Compare_Image

Скрипт на языке Lua

 

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

Назначение

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

Что нужно для работы

 

  1. Этот скрипт :)
  2. Файл строк интерфейса для вашей локали. Пока есть только для русского языка Russian_Russia.1251. Могу сделать для английского и может быть для немецкого, но пока тренируемся на кошках - не занимался вопросом.
  3. Windows - пока пишу под него, хотя теоретически можно и под Линукс адаптировать. Но опыта с ним маловато, да и все тут присутствующие всё равно сидят на окнах, как ни крути. Так что с него начнём. У меня Windows 8.1 x64 Pro.
  4. Lua 5.1 - для запуска и работы этого скрипта. Для Windows можно скачать и установить Lua for Windows - github.com/rjpcomputing/luaforwindows/releases
  5. ImageMagick 7.0.8 - для обработки и наложения изображений. В переменной среды PATH должен быть прописан путь к папке исполняемого файла (по умолчанию установщик это сделает). Скачать тут - imagemagick.org/script/download.php#windows
  6. Visual C++ - для работы ImageMagick. Обычно он уже установлен на ПК с Windows.
  7. sejda console 3.2.83 - для извлечения страниц из PDF. Функционал пока не реализован.
  8. Java runtime - для работы sejda console. Обычно он уже установлен на ПК с Windows.

 

 

Методика и параметры

 

 

В указанной ранее теме примерно описан алгоритм действий, выполняемых вручную. Программа действует аналогично, автоматизируя процесс. Имеется настройка алгоритма.

Программа принимает следующие исходные данные в виде аргументов командной строки или через интерфейс запросов:

  1. Первый файл для сравнения. Пока реализовано сравнение файлов растров (JPG, PNG и т.п.). В будущих версиях реализую поддержку PDF. Сейчас придётся картинку из PDF получать вручную. Или напрямую печатать в растр. Поддерживается "перетаскивание" файла на окно консоли.
  2. Второй файл для сравнения.
  3. Путь для сохранения результата(-ов). По умолчанию предлагается папка второго файла для сравнения. В нём будет создана папка PAV_ComImg, в ней будут сохраняться временные файлы и файлы результата сравнения. Поддерживается "перетаскивание".
  4. Схема сравнения файлов. Представляет из себя строку из 8 цифр, каждая из которых определяет один из параметров работы. Вместо любой цифры можно использовать символ # - в этом случае программа будет по очереди поставлять на его место все возможные варианты параметра, выполняя сравнение многократно (результатов сравнения, соответственно, тоже будет несколько). Например, #4103113 проведёт сравнение по схемам 04103113 и 14103113.
    Если указано меньше 8 символов, программа добавляет слева отсутствующие нули. То есть 1103 будет трактоваться как 00001103.
    Детальное описание схем приведено в прилагаемом файле.
  5. Тип легенды к сравнению. Дело в том, что сравниваем мы обычно очень похожие чертежи, и чтобы понять, каким цветом обозначены части какого растра, в углу по выбору может быть расположена легенда в соответствующих цветах. Возможные значения:
    0 - без расшифровки цветов;
    1 - пиктограммы x o + в углу;
    2 - текст Удалено/Осталось/Добавлено в углу;
    3 - текст Удалено/Осталось/Добавлено и имена файлов в углу.

Параметры принимаются в указанном порядке. В командной строке можно передать не все параметры, а первые 1, 2, 3 или 4 - остальные будут запрошены в консоли. Параметры 3, 4 и 5 предлагаются по умолчанию (в треугольных скобках) - можно просто Enter'ом подтвердить выбор.

Во время работы программа будет рапортовать об успехе отдельных этапов. По завершении всей работы текст окрасится в зелёный (если нет ошибок) или красный цвет (если во время выполнения была хоть одна ошибка).

 

 

Ограничения и предупреждения

 

 

К сожалению, у меня не так много времени и не так много опыта написания подобных скриптов, поэтому скрипт предоставляется "как есть" ("as is"), все риски по потере данных в результате его работы полностью лежат на пользователе. Будьте внимательны.

  1. Пока работает только на Windows.
  2. Программа не понимает русские (и другие юникод) символы в именах папок и файлов. Я пока не вник в магию UTF8, ANSI и кодировки 866. Программа на русском только пишет. Чукча - писатель, чукча - не читатель, как говорится :) Пробелы поддерживаются.
  3. Программа никогда не запрашивает разрешения на перезапись файлов и удаление временных файлов. Если вы сохранили результат, а затем запустили сравнение файлов с такими же именами в ту же папку по той же схеме сравнения - результаты будут перезаписаны без запроса.
  4. Защиты от "дурака" нет, и вряд ли появится. Если программа запрашивает цифру - дайте ей цифру. Если программа предлагает цифру из диапазона - не выходите за рамки диапазона. Никаких проверок исходных данных, кроме наличия файлов и папок, не реализовано. Проверка разрешений на чтение/запись файлов также не проводится.
  5. Проверка наличия необходимых программ пока не реализована. Приготовьте необходимое.
  6. Работа с PDF пока не реализована.
  7. Некоторые параметры работы "зашиты" в скрипт, их можно настроить только там. Всё достаточно прозрачно, и даже что-то описано. Выносить параметры в отдельный файл пока не планирую - в файле скрипта есть секция "констант", где основные параметры вынесены. Можно по необходимости секцию расширить.
  8. Схем сравнения реализовано аж 7. По факту применимых 2 - 4 и 6. Суть работы остальных пока слабо уловима, результаты получаются специфические - не даром ImageMagick называется - сплошная магия. Возможно, в будущем оставлю две-три схемы вместо 7.
  9. Каждое сравнение порождает не один, а два файла результата. Обычно второй файл не имеет смысла. Но иногда там получается интересный результат.

 

 

Что планируется

 

  1. Преодолеть нехватку времени и избыток лени.
  2. Поддержка PDF в качестве исходных файлов.
  3. Поддержка русских (и других юникод) символов в именах папок и файлов.
  4. Поддержка разноразмерных растров.
  5. Поддержка масштабирования и сдвига файлов относительно друг друга (в случае смещения видового экрана и изменения масштаба, например).
  6. Думаю вынести пути к прикладным программам в настройки, чтобы можно было просто указать вручную путь к файлам и не устанавливать программы - они вполне работают из распакованной папки. Заодно и с флэшки можно будет пускать.

 

 

Пример работы

 

 

Увы, почему-то тут файлы нельзя прикрепить. Даю справку ссылку.

Исходный файл 1:

https://cloud.mail.r.../Aq7D/2sBB4Lz72

Исходный файл 2:

https://cloud.mail.r.../4DWj/3mFRDsnYy

Номер схемы сравнения

#4##3##3

Схема наложения - умножение. Цвета оригиналов - преобразуем в чёрно-белый. Остальные параметры перебираем.

Тип легенды:

0 - без расшифровки (места нет для этого).

Результаты сравнения (начало имени файла соответствует схеме сравнения, пустые и бесполезные результаты удалены):

https://cloud.mail.r.../yeDG/XBkwC1csm

Запустить такое сравнение можно из командной строки:

PAV_Compare_Image.lua "D:\path to files\1colortest.png" "D:\path to files\2colortest.png" D:\result #4##3##3 0

Другой пример:

Файл 1

Файл 2

Запуск:

PAV_Compare_Image.lua D:\test_3.png D:\test_4.png D: 04113003 3

Результат

 

 

Список изменений

 

 

0.1.5

Опубликовано впервые.

 

 

Скачать все материалы. В папке имеются:

  1. Сам скрипт - PAV_Compare_Image.lua.
  2. Язык строк для русского языка - Russian_Russia.1251.
  3. Расшифровка схем сравнения.
  4. Примеры исходных файлов и результаты их сравнения.

Засим кланяюсь. Пользуйтесь, если получится :D

Изменено пользователем Kreator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...