2012-06-08 53 views
1

我嘗試顯示由OpenCV Lib for Android的HOGDescriptor計算的圖像的漸變和角度。在開始我有一個3通道圖像Mat()與8位無符號整型(CV_8UC3)。計算的結果是梯度的MAT()(CV_32FC2)和角度的Mat()(CV_8UC2)。我如何可視化這個結果?代表價值的是什麼?爲什麼有角度Mat()2通道?是否是漸變Mat()的2個通道是漸變的x和y分量?我找不到computeGradiant-Method的文檔。使用HOGDescriptor(OpenCV for Android)對圖像進行漸變和角度可視化

回答

2

HOG描述符是一個面向梯度的直方圖:它是一個直方圖,其中每個面元代表相應方向上的梯度投票。 爲了計算這個描述符時,應先轉換你3個頻道色彩圖像轉換成灰度圖像

cv::cvtColor(CV_BGR2GRAY); 

「ComputeGradient」方法的結果爲爲例兩個圖像(相同大小與原始):X-組件和y組件。 然後,您應該能夠爲每個像素計算梯度大小和方向。

mag=sqrt(x*x+y*y) 
alpha=atan(y/x) 

然後你可以填寫你的直方圖。請注意,HOG descritpor由塊和單元格計算。有關更多詳細信息,請參閱this

+0

computeGradient的結果實際上是2個圖像,其名稱爲:grad和angle。 grad Mat()有2個通道。我認爲這代表每個像素的x分量和1通道y分量的1個信道。比我可以用「mag = sqrt(x * x + y * y)」來計算大小,但爲什麼2個通道用於角度Mat()?如果這個Mat()包含角度,那麼1個通道就足夠了? – ChHaupt

+0

我可以在哪裏找到您的computeGradient函數? CV_32FC1足夠用於角度。 – Eric

+0

您可以找到「computeGradient」:http://www710.univ-lyon1.fr/~eguillou/documentation/opencv2/structcv_1_1_h_o_g_descriptor.html#a5ce15ef09b0eb7d0ecfd7f2eb353df83而對於Android:http://ngocdaothanh.github.com/opencv_android_javadoc/index .html?overview-tree.html – ChHaupt