2015-03-14 2 views
0

Я узнал этот метод с SPIE Proceeding article, они использовали преобразование дважды HSV для обнаружения теней. В своей работе, метод было указано следующим образом:Что такое «преобразование дважды HSV»?

Во-первых, цветовая модель изображения преобразуется из RGB в HSV, и три компоненты модели HSV нормированы от 0 до 255, затем изображение преобразуется из RGB в HSV еще раз. В-третьих, изображение превращено в серое изображение из цветного изображения, только серый значение красного компонента используется. В-четвертых,, пороговое значение OTSU используется для создания порога, с помощью которого изображение преобразуется в двоичное изображение. Так как серое значение области тени обычно меньше, чем те области, которые не покрыты тенью, объектив - это пиксели, значение серых которых ниже порогового значения, а фон - это пиксели, значение серого которых превышает пороговое значение.

Выполняют ли второй и третий шаги?

+0

Не для меня, но это может быть плохо выражено, а не что-либо еще. Я предполагаю, что окружающие слова и/или код в оригинальной статье помогут выяснить. –

+0

Я думаю, они хотят сравнить нормализованный hsv с исходным hsv? – Micka

ответ

2

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

Начнем с второй точки:

Во-первых, цветовая модель изображения преобразуется из RGB в HSV, и три компоненты модели HSV нормированы от 0 до 255, то изображение снова преобразуется из RGB в HSV

Вы хорошо знаете, что преобразование изображения из RGB в HSV приводит к еще одному выходному каналу с тремя каналами. В зависимости от используемой вами платформы вы получите 0-360 или 0-1 для первого канала или Hue, 0-100 или 0-255 для второго канала или Saturation и 0-100 или 0-255 для третьего канала или значения. Каждый канал может быть неравным по величине по сравнению с другими каналами, и поэтому эти каналы нормализуются до диапазона 0-255 независимо друг от друга. В частности, это означает, что компоненты Hue, Saturation и Value все нормализуются так, что все они охватывают от 0 до 255.

Как только мы это сделаем, у нас теперь есть изображение HSV, где каждый канал находится в диапазоне от 0 до 255. Я предполагаю, что они называют это image RGB изображение, потому что каналы все пролегают от 0 до 255, как и любое 8-битное изображение RGB. Это также имеет смысл, потому что, когда вы трансформируете изображение из RGB в HSV, динамический диапазон каналов охватывает от 0 до 255, поэтому я предполагаю, что они нормализуют все каналы в первом результате HSV, чтобы сделать его подходящим для следующего шага.

Как только они нормализуют каналы после преобразования HSV, как указано выше, они делают еще один Преобразование HSV на этот новый результат.Причины, по которым они это сделают, второе время находятся вне меня и не имеют никакого смысла, но это то, что я собрал из приведенного выше описания, и это то, что они, вероятно, подразумевают под «дважды преобразованием HSV» - . исходное изображение RGB до HSV один раз, нормализовать этот результат, чтобы все каналы охватывали от 0 до 255, затем повторно применили преобразование HSV к этому промежуточному результату.

Давайте вернемся к третьему пункту:

В-третьих, изображение превращается в серое изображение из цветного изображения, используется только серое значение красного компонента.

Результат после преобразования изображения HSV второй раз, конечный результат - это просто первый канал, который по сути является полутоновым изображением и является «красным» каналом. Кстати, это также соответствует оттенку после преобразования HSV. Я не совсем уверен, какие свойства имеет канал Hue после преобразования изображения с использованием HSV дважды, но, возможно, он работал для этого конкретного метода.


Я решил дать этому вихрь и посмотреть, действительно ли это работает. Вот пример изображения из тени я нашел в Интернете:

Источник: http://petapixel.com/

Основной трубопровод, чтобы сделать снимок, конвертировать его в HSV, ренормируют изображение таким образом, что значения снова 0-255, выполните другое преобразование HSV, затем выполните адаптивный порог через Otsu. Порог ниже оптимального значения для сегментации теней.

Я собираюсь использовать OpenCV Python, так как у меня нет библиотек C++, установленных на моем компьютере здесь. В OpenCV при преобразовании изображения в HSV, если изображение является неподписанным 8-битным RGB, компоненты Saturation и Value автоматически масштабируются до [0-255], но компонент Hue масштабируется до [0-179], чтобы установите Hue (который первоначально [0-360)) в тип данных. Таким образом, я масштабировал каждое значение на (255/179), чтобы оттенок был нормализован до [0-255]. Вот код, который я написал:

import numpy as np # Import relevant libraries 
import cv2 

# Read in image 
img = cv2.imread('shadow.jpg') 

# Convert to HSV 
hsv1 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 

# Renormalize Hue channel to 0-255 
hsv1[:,:,0] = ((255.0/179.0)*hsv1[:,:,0]).astype('uint8') 

# Convert to HSV again 
# Remember, channels are now RGB 
hsv2 = cv2.cvtColor(hsv1, cv2.COLOR_RGB2HSV) 

# Extract out the "red" channel 
red = hsv2[:,:,0] 

# Perform Otsu thresholding and INVERT the image 
# Anything larger than threshold is white, anything greater is black 
_,out = cv2.threshold(red, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) 

# Show the image - shadow mask 
cv2.imshow('Output', out) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

Это выход я получаю:

enter image description here

Хм .... ну, очевидно, есть некоторые шумные пикселей, но я предполагаю, что это действительно работает .. .. вроде!

+2

Верхняя часть слежения! –

+0

@MarkSetchell - Спасибо, сэр! – rayryeng

+0

Спасибо всем. одна небольшая проблема, может быть, второй конверт должен быть «hsv2 = cv2.cvtColor (hsv1, cv2.COLOR_RGB2HSV)». и серое значение тени ниже порога в их результате. – gylns

Смежные вопросы