2011-08-12 38 views
1

我試圖從彩色圖像中獲取黑白直方圖數據。然而,目前的設置,我與我的直方圖只顯示顏色數據我敢肯定,這是我必須修改我當前的數學設置。從直方圖中獲取黑白亮度值

// Current setup on how to render histogram data to the screen with hist being the calculated histogram 
histimg = Mat::zeros(200, 320, CV_8UC3) 
int binW = histimg.cols/16; 
Mat buf(1, 16, CV_8UC3); 
for(int i = 0; i < 16; i++) 
{ 
    buf.at<Vec3b>(i) = Vec3b(saturate_cast<uchar>(i*180./16), 255, 255); 
} 
cvtColor(buf, buf, CV_HSV2BGR); 

for(int i = 0; i < 16; i++) 
{ 
    int val = saturate_cast<int>(hist.at<float>(i)*histimg.rows/255); 
    rectangle(histimg, Point(i*binW,histimg.rows), 
     Point((i+1)*binW,histimg.rows - val), 
     Scalar(buf.at<Vec3b>(i)), -1, 8); 
} 

在此先感謝您的任何建議。

+0

我不知道你_I的意思我試圖從顏色image._你的意思是你想要的彩色圖像的灰度強度直方圖獲得黑白直方圖數據?還是你想繪製一個黑色和白色的直方圖?另外,計算機視覺中的「黑白」與電視中的不同。在電視上它意味着各種各樣的灰色陰影。在我們的世界裏,它是代表黑色或白色的兩個二進制值之一。 – SSteve

+0

我有用於創建直方圖的彩色圖像。根據我的數學,我可以得到不同的紅色,綠色和藍色以及它們的強度值。我想對黑色,(0,0,0)和白色(255,255,255)顏色值也是這樣。 – Seb

回答

1

這裏有兩種方法:

  1. 創建whiteCountblackCount變量。遍歷所有像素,如果像素爲(255,255,255),則增加whiteCount,如果像素爲(0,0,0),則增加blackCount

  2. 將圖像轉換爲灰度圖,創建直方圖並查看第一個和最後一個bin。

+0

第二種方法似乎是最好的方法。謝謝 – Seb