Граничное Обнаружение и прозрачность

Шаблоны должны использоваться экономно.

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

Лучшие отрицательные аргументы пошли бы к тому, что STL имеет много "глюков", и использующие шаблоны в целях, которые уже покрывает STL, изобретают велосипед. Шаблоны также увеличивают время ссылки, которое может быть беспокойством о некоторых проектах, и иметь много особенностей в их синтаксисе, который может быть тайным людям.

, Но положительные стороны с повторным использованием общего кода, введите черты, отражение, интеллектуальные указатели, и даже метапрограммы часто перевешивают отрицательные стороны. Вещь, в которой необходимо быть уверены, состоит в том, что шаблоны всегда используются тщательно и экономно . Они не лучшее решение в каждом случае и часто даже второе или третье лучшее решение.

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

6
задан Jav_Rock 4 June 2012 в 13:54
поделиться

4 ответа

Если ваш фон состоит из изображения, но непоследователен на разных изображениях, это может быть сложно, но вот что я бы сделал:

  1. Разделите изображение на некоторые формы интенсивности / цвета, такие как YUV или Lab.
  2. Создайте гистограмму над цветной частью. Найдите наиболее часто встречающийся цвет, это (скорее всего) ваш фон (обновление). Возможно, лучшим трюком здесь было бы найти наиболее часто встречающийся цвет всех пикселей в пределах одного или двух пикселей от края изображения.
  3. Начиная с края изображения, установите все пиксели, которые имеют этот цвет и соединены с краем через пиксели этого цвета, как прозрачные.
  4. Край предмета одежды теперь будет выглядеть немного некрасиво, потому что он состоит из пикселей, которые приобретают свой цвет как от фона, так и от предмета одежды. Чтобы справиться с этим, вам нужно проделать немного больше работы:

    1. Найдите край предмета одежды с помощью некоторого механизма определения края .
    2. Замените цвет краевых пикселей смешением цвет только «внутри» краевого пикселя (т. е. цвет одежды в этой области) и прозрачный (если формат вашего выходного изображения поддерживает это).
    3. Если вы хотите по-настоящему фантазировать, вы увеличиваете прозрачность в зависимости от того, насколько цвет этого пикселя "похож" на цвет фона.
6
ответ дан 16 December 2019 в 21:42
поделиться

если вы знаете точную интенсивность цвета фона, и она никогда не изменится, а предметы одежды никогда не будут совпадать с этим цветом, то это простое применение вычитания фона, вот и все это не конкретная интенсивность цвета, считается "включенным" пикселем, представляющим интерес. Затем вы можете использовать маркировку связанных компонентов ( http://en.wikipedia.org/wiki/Connected_Component_Labeling ) для определения отдельных группировок объектов.

0
ответ дан 16 December 2019 в 21:42
поделиться

Почему бы не добавить обычный первичный ключ, а затем указать, что part_number и part_revision как unique_topting ?

Это по сути, это джанговский (джангонический?) способ делать то, что сказал Митч Уит.

  • преобразуйте ваше изображение в HSV или HSL
  • определите значение оттенка фона (+/- 10): выполните этот шаг один раз, например, с помощью Photoshop, затем используйте то же значение для всех ваших изображений.
  • выполнить пороговое значение цвета: на канале оттенка исключить оттенок фона (обычно [0, hue [+] hue, 255]), для всех других каналов - весь диапазон значений (обычно от 0 до 255). при этом будут выбраны пиксели, которые НЕ являются фоном.
  • выполнить операцию «заполнения дыр» (обычно выполняемую при анализе капель или функциях маркировки), чтобы завершить часть одежды, которая могла быть того же цвета, что и фон.
  • 12101]. Теперь у вас есть изображение, которое является «маской» одежды: ненулевые пиксели представляют одежду, 0 пикселей представляют собой фон.
  • этот этап обработки зависит от того, как вы хотите сделать пиксели прозрачными: обычно, если вы сохраняете изображение как PNG с альфа-каналом (прозрачностью), используйте операцию логического И (также называемую «маскированием») между альфа-каналом. канал исходного изображения и маска построена на предыдущем шаге.
  • вуаля, фон исчез, сохраните получившееся изображение.
0
ответ дан 16 December 2019 в 21:42
поделиться

По сути, найдите цвет фона и вычтите его, но я думаю, вы это знали. Немного сложно сделать все это автоматически, но это кажется возможным.

Во-первых, взгляните на обнаружение больших двоичных объектов с помощью OpenCV и посмотрите, сделано ли это в основном за вас.

Чтобы сделать это сами:

найти фон : Есть несколько вариантов. Вероятно, проще всего будет гистограмма изображения, и большое количество пикселей с одинаковыми значениями является фоном, а если есть две большие коллекции, фоном будет тот, с большим отверстием посередине. Другой подход состоит в том, чтобы взять полосу по периметру в качестве цвета фона, но это кажется неполноценным, поскольку, например, отражение от вспышки может значительно осветлить более центральные пиксели фона.

удалить фон : сначала нужно установить порог изображения на основе цвета фона, а затем запустить алгоритмы «открытия» или «закрытия» для этого, а затем использовать это как маску для выберите свой предмет одежды. (Смысл открытия / закрытия состоит в том, чтобы не удалять мелкие цветные элементы на одежде, такие как черные пуговицы на белой блузке или, скажем, яркие отражения на черной одежде.)

OpenCV - хороший инструмент для этого.

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

или "закрыть" алгоритмы для этого, а затем использовать это как маску для выбора предмета одежды. (Смысл открытия / закрытия в том, чтобы не удалять мелкие цветные элементы на одежде, такие как черные пуговицы на белой блузке или, скажем, яркие отражения на черной одежде.)

OpenCV - хороший инструмент для этого.

Самая сложная часть этого, вероятно, будет в тени вокруг объекта (например, черная куртка на белом фоне будет иметь непрерывную серую тень на некоторых краях, и где сделать этот разрез?), Но если вы получите оставьте еще один вопрос.

или "закрыть" алгоритмы для этого, а затем использовать это как маску для выбора предмета одежды. (Смысл открытия / закрытия в том, чтобы не удалять мелкие цветные элементы на одежде, такие как черные пуговицы на белой блузке или, скажем, яркие отражения на черной одежде.)

OpenCV - хороший инструмент для этого.

Самая сложная часть этого, вероятно, будет в тени вокруг объекта (например, черная куртка на белом фоне будет иметь непрерывную серую тень на некоторых краях, и где сделать этот разрез?), Но если вы получите оставьте еще один вопрос.

)

OpenCV - хороший инструмент для этого.

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

)

OpenCV - хороший инструмент для этого.

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

2
ответ дан 16 December 2019 в 21:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: