簡體   English   中英

計算彩色圖像的HSV直方圖與HS直方圖不同嗎?

[英]Calculate HSV histogram of a coloured image is it different from H-S histogram?

我想計算圖像的HSV直方圖。我進行了很多搜索,但沒有發現有用的信息。 在opencv在線指南中,我發現了HS直方圖。 V對照明有什么影響? HSV和HS是否相同(是說V對照明沒有影響)? 這是HS直方圖的代碼

cvtColor( Frame, hsv_base, CV_BGR2HSV );
    int h_bins = 50; 
int s_bins = 32;
int histSize[] = { h_bins, s_bins };

float h_ranges[] = { 0, 256 };
float s_ranges[] = { 0, 180 };

const float* ranges[] = { h_ranges, s_ranges };
int channels[] = { 0, 1 };
calcHist( &hsv_base, 1, channels, Mat(), hist_base, 2, histSize, ranges, true, false );

我建議您閱讀有關HSV的Wiki頁面。

但是要給出一個快速答案,V分量基本上控制着顏色的亮度。 因此,如果目標是創建顏色直方圖,那么您就不想區分深綠色和淺綠色。

要回答您的問題,HS僅指HSV圖像的前兩個通道。 如果您確實想在3個通道中進行聚類,則可以通過修改代碼以在3個通道上起作用並在直方圖中添加第三維來實現。 但這可能不是您想要實現的。

cvtColor( Frame, hsv_base, CV_BGR2HSV );
int h_bins = 50; 
int s_bins = 32;
int v_bins = 10;
int histSize[] = { h_bins, s_bins, v_bins };

float h_ranges[] = { 0, 256 };
float s_ranges[] = { 0, 180 };
float v_ranges[] = { 0, 256 };

const float* ranges[] = { h_ranges, s_ranges, v_ranges };
int channels[] = { 0, 1, 2};
calcHist( &hsv_base, 1, channels, Mat(), hist_base, 3, histSize, ranges, true, false );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM