Искажение ImageMagick v7

Я установил ImageMagickV6 на свой Linux-компьютер с незапамятных времен и недавно настроил эту команду для обработки искаженного изображения:

convert ref_25X.tif -virtual-pixel Gray +distort Plane2Cylinder 60 MIFF:- | \
convert - -rotate 90 MIFF:- | \
convert - -virtual-pixel Gray +distort Plane2Cylinder 50 MIFF:- | \ 
convert - -rotate -92 MIFF:- | \
convert - -distort Perspective '10,10 10,10 10,1000 10,1000 1280,10 1280,30 1280,1000 1280,980' MIFF:- | \
convert - -shave 80x100 plane1.png

Поскольку окончательное приложение будет работать на компьютере с Windows, я скопировал его туда, чтобы обнаружить, что на этом компьютере установлена ​​​​версия IMv7. А в версии 7 они радикально изменили способ работы с командной строкой, как описано в https://imagemagick.org/script/command-line-processing.php.

Поэтому я попытался заново научиться работать с исправлением искажений в V7 и обнаружил, что индексная страница https://imagemagick.org/index.php ссылки на справку V6 https://imagemagick.org/Usage/distorts/, поэтому его нельзя использовать!!!

Может кто-нибудь показать мне, как справиться с этим в IMv7?


person alessandro    schedule 05.02.2020    source источник
comment
Фу! Зачем ты вообще так делаешь??? Это очень некрасиво. Есть ли для этого причина?   -  person Mark Setchell    schedule 05.02.2020
comment
некрасиво почему? Я должен исправить бочкообразную дисторсию в обоих направлениях, исправить небольшую разориентацию и, наконец, немного исправить перспективу: это изображение, полученное под микроскопом с некоторым смещением оптики...   -  person alessandro    schedule 05.02.2020
comment
Вероятно, вы можете удалить каждое вхождение MIFF:- | convert -, и оно все равно будет работать. Вы напрасно записываете каждую стадию обработки через канал и запускаете новый процесс для его чтения, когда у вас все равно уже есть изображение в памяти! Вот пример выполнения нескольких действий с одним изображением stackoverflow.com/a/28109569/2836621.   -  person Mark Setchell    schedule 05.02.2020
comment
Если вам нужно скорректировать бочкообразную дисторсию, почему вы не используете -distort бочкообразную. См. imagemagick.org/Usage/distorts/#barrel.   -  person fmw42    schedule 05.02.2020
comment
Большое спасибо @MarkSetchell, который значительно упростил мою команду Linux - она ​​работает отлично!   -  person alessandro    schedule 06.02.2020
comment
@ fmw42 да, я обнаружил Barrel после успешного использования Plane2Cylinder, я сейчас изучаю его ...   -  person alessandro    schedule 06.02.2020


Ответы (1)


Я начну с этого в качестве первого удара и улучшу его, если вы предоставите пример того, как должны выглядеть входные и выходные изображения, и если вы скажете мне, какие ошибки вы получаете в своем окне Windows:

magick ref_25X.tif -virtual-pixel Gray ^
   +distort Plane2Cylinder 60.         ^
   -rotate 90                          ^
   +distort Plane2Cylinder 50          ^
   -rotate -92                         ^
   -distort Perspective "10,10 10,10 10,1000 10,1000 1280,10 1280,30 1280,1000 1280,980" ^
   -shave 80x100 plane1.png

Я не использую Windows, но я считаю, что она использует знак вставки (^) в качестве символа продолжения строки, и я считаю, что она очень недовольна параметрами в одинарных кавычках. Если кто-то знает другое, пожалуйста, пингуйте меня.

person Mark Setchell    schedule 05.02.2020
comment
Да, эта команда будет работать в Windows, за исключением пробела после знака вставки в конце строки -virtual-pixel Gray +distort Plane2Cylinder 50. Удалите это пространство. Кроме того, ему нужна только одна настройка виртуального пикселя, если она используется для различных искажений. - person GeeMack; 05.02.2020
comment
@GeeMack Хорошо замечено, спасибо. Я думаю, что сделал все исправления, как вы предлагаете. - person Mark Setchell; 05.02.2020
comment
Спасибо @MarkSetchell, я сейчас на пути к тестированию ... можете ли вы просто объяснить (синтаксис V7 все еще неясен для меня), почему некоторые аргументы +distort , а некоторые -distort ? - person alessandro; 06.02.2020
comment
Я не уверен, что я могу добавить к документации по искажениям imagemagick.org/ script/command-line-options.php#distort Если у вас есть какие-то конкретные вопросы, я подозреваю, что @GeeMack является экспертом в этой области. - person Mark Setchell; 07.02.2020
comment
С -distor операция не изменяет размеры области просмотра. Использование +distort с + изменяет окно просмотра, чтобы оно соответствовало результату искажения. Есть несколько исключений, когда не имеет смысла изменять/не изменять размеры области просмотра. - person GeeMack; 09.02.2020