обрежьте темную область на изображении с мелкими полосками на ней

#image-processing #computer-vision

Вопрос:

Я пытаюсь удалить темную область изображения, на которой есть несколько неглубоких полос. Чтобы быть ясным, я прикрепляю картинку: исходное изображение порогового изображения

Я попытался сделать это с помощью серого уровня _, th = cv2.threshold(gray, 67, 255, cv2.THRESH_TOZERO) , но получил неудовлетворенный результат.

Пожалуйста, посоветуйте. Спасибо.

Комментарии:

1. Вы не даете нам много информации для работы. Знаете ли вы что-нибудь еще о корме? Может быть, темная область всегда находится с правой стороны? Может быть, всегда есть 3 региона? Или больше? Или меньше? Всегда ли области имеют прямоугольную форму?

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

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

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

Ответ №1:

Если вы возьмете среднее значение (или сумму) по всем строкам, используя np.mean(image, axis=1) и аналогично по столбцам, используя np.mean(image, axis=0) , вы получите это, что позволит вам найти края областей, если они прямоугольные и выровнены по краям изображения.

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

Комментарии:

1. Я использовал аналогичный метод для обрезки исходного изображения(направление X), и я определенно мог бы сделать то же самое для направления Y. Я, вероятно, мог бы сделать это и для каждой строки или столбца, но проблема в следующем: как сгруппировать данные, чтобы найти точки разделения на основе значения(серая шкала). Поскольку мы имеем дело с тысячами изображений с различными серыми масштабами, трудно использовать фиксированные значения для группировки данных.