Как я могу автоматически применить интеллектуальную обрезку к сотням фотографий монет?

введите описание изображения здесьвведите описание изображения здесь

У меня ужасные трудности. Мне постоянно приходится фотографировать, а затем редактировать сотни изображений монет. Затем я вручную вырезаю лишний фон, оставляя небольшую рамку вокруг монеты. Я знаю, что это можно автоматизировать. Кажется, я не могу заставить его работать. Мне нужно автоматически обрезать цвет фона до допуска и с рамкой от центрального изображения.

Почему бы не кадрировать в камере с зумом для нужных полей сверху и снизу (т.е. сделать монеты одинакового размера и положения в кадре). Если вы убедитесь, что монета (монеты) находится в центре кадра, тогда сценарий обрезки или действие должны решить проблему.
Вы говорите, что не можете «заставить это работать», но ничего не сказали нам о том, что пытались сделать. Объяснение того, что вы уже пробовали и почему это не удается, не позволит нам предложить что-то, что, как вы знаете, не работает.

Ответы (3)

Это, вероятно, потребует немного сценариев или программирования. Почитайте о преобразовании Круга-Хафа . По сути, он обнаруживает круги на изображении. Хотя математика довольно сложна, вы, вероятно, сможете найти достойную библиотеку на языке, который абстрагируется от многих сложностей.

Например, ознакомьтесь с библиотекой OpenCV (Open Computer Vision) , которая имеет интерфейсы C, C++, Python и Java. В качестве примера использования вот учебник по обнаружению кругов с использованием OpenCV в Python . В этом примере circlesвектор представляет собой список из трех кортежей, каждый из которых содержит (координату x, координату y, радиус) найденной окружности. Чтобы найти круг с наибольшим радиусом, что-то вроде:

largest_circle = max(circles, key=lambda c: c[2])

найдет самый большой круг на изображении (который предположительно является вашей монетой) как тот же самый (x, y, r) кортеж. После этого вы можете просто увеличить rна небольшую величину (чтобы создать границу), чтобы вы могли обрезать изображение в: (x min = x - r, x max = x + r), на (y min = y - г, у макс = у + г).

Вместо использования OpenCV в этом примере используется библиотека обработки изображений scikit-image с Python. Изображение в этом примере представляет собой изображение нескольких выстроенных в линию монет, показывающих найденные круги на изображении.

Оглядываясь назад, возможно, этот вопрос следует отнести к stackoverflow.
Я думаю, что он больше ищет уже существующее программное решение, которое можно настроить, а не разработать/скриптовать, как это можно сделать с Photoshop Actions.
@dragos Наверное, ты прав. Я надеялся, что ОП ответит примером до / после фотографий, как вы просили. Если на исходном изображении есть большие различия в увеличении, размещении монет и т. д., вероятно, наилучшие результаты будут получены с помощью программного или алгоритмического решения.

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

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

Вот как это записать.

Перейдите в меню «Окно» и выберите «Действия». Появится небольшая палитра с уже предустановленными экшенами Photoshop. Чтобы использовать любое предопределенное действие, просто выберите его и нажмите кнопку воспроизведения внизу. Если вы хотите создать свое собственное, нажмите кнопку меню в правом верхнем углу и выберите «Новое действие». Назовите свое действие, нажмите «ОК», и вы автоматически перейдете в режим записи. Все, что вы делаете в Photoshop, теперь будет записано, поэтому выполните любые действия, которые вы хотите автоматизировать, а затем нажмите кнопку «Стоп» в нижней части палитры действий.

Как это будет полезно? Конечно, действие, связанное с кадрированием, либо обрезает каждое изображение одинаково, либо делает паузу, пока вы обрезаете его вручную. Я не понимаю, как это может работать.
Похоже, это будет работать только в том случае, если монета находится в одной и той же части кадра для каждой фотографии. Это правильно?
Во-первых, ошибочно предположить, что нужно обрезать . Действие должно быть «Выбрать цветовой диапазон (черный)» ---> «Растушевка (возможно, 2 пикселя в зависимости от разрешения)» ---> Выбрать инверсию ---> Создать новый черный слой ---> Скопировать выделение в черный слой ---> Сохранить. Конечно, возможно, регулировка цвета, контрастности и резкости, если это необходимо. Так что, с другой стороны, все это как бы излишество. Он сказал, что ему постоянно нужно это делать, поэтому в лучшем случае у него должна быть какая-то установка, в которой установлена ​​камера, кольцевая вспышка, ручная экспозиция, фокусировка и просто щелчок или щелчок монеты. ПС не нужен

Если у вас есть Photoshop или его эквивалент, вы можете сделать действие, чтобы открыть каждый jpeg по очереди,

* добавьте новый фоновый слой нейтрального цвета, перейдите к слою с монетой, * выберите цвет фона, на котором сидела монета при фотографировании, * отредактируйте выделение, чтобы сделать его меньше (используя «Уточнить край»),
* удалить выделение.

[Это оставит изображение монеты с крошечной рамкой исходного цвета фона]

Затем вы можете сохранить в формате gif с включенной прозрачностью и установить новый цвет фона. Если у вас есть PS и вы хотите это сделать, я могу сделать набор изображений, чтобы запечатлеть последовательность правок.

Да у меня есть ps6. Нигде не могу найти Refine Edge.
Выложил две фотки, они после обрезки.
предварительная обрезка - это просто больше этого фонового цвета.
ну это крутяк.
ну это крутяк. Если программное решение от scottbb неосуществимо, я предлагаю вам рассмотреть стандартный способ запуска монет. Если все они находятся в одних и тех же держателях, сделайте небольшой держатель для съемки и стандартизируйте положение камеры и расстояние (возможно, с помощью стойки для съемки), чтобы изображение монеты всегда было в центре одного и того же места. Затем выполните действие PS, которое импортирует каждый файл и изменяет размер холста на квадрат, в который заключена монета.