2011-03-10 70 views
1

我認爲標題是自解釋的。雖然我實際上按列搜索最黑和最紅的像素,但我猜想回答第一個問題會自動回答第二個問題。如何找到位圖中最紅和最黑的像素?

+0

如果您的表示是RGB,您可能會發現(0,0,0)和(255,0,0)的「最接近」。請注意,「最接近」與「最黑」不同,但它可以被定義爲距離的數學意義。你必須選擇合適的距離,儘管 – 2011-03-10 14:49:47

+0

如果用「最黑」表示最不亮的像素,則可以使用下面的公式計算亮度並搜索最低亮度值像素:Y = 0.2126 R + 0.7152 G + 0.0722 B來自維基百科) – 2011-03-10 15:00:03

回答

3

假設您的位圖以RGB顏色格式(而不是YCbCr或CYMK)存儲顏色,並進一步假定每個顏色分量使用8位,則最接近(0,0,0)的像素是最黑的,而像素最接近到(255,0,0)是最紅的。假設這不是真正的新信息給你,我想你的問題是如何計算「距離」,所以你可以找出哪一個是最接近的,正確的?

要找出最黑的像素是什麼,RGB可能不是最佳的顏色表示;我更喜歡HSL。 HSL格式的像素由三個值組成,H是色調(基本顏色),S是飽和度(多少「灰色」混合到顏色中),L是亮度(基本上是亮度)。具有最低L值(L在1.0和0.0之間)的像素然後將最接近黑色;具有不同H/S值的兩個像素,但是相同的L值同樣是「黑色」,即使它們可能具有不同的顏色。

要找出哪個像素最接近紅色,您需要比較像素的HSL值並搜索最接近0.0度的H值的像素(因爲0.0度爲紅色,H爲0.0至360.0之間度數,但360.0度等於0.0度),最接近1.0的S值(因爲1.0意味着全色,而0.0意味着完全灰色)並且L值最接近0.5(因爲0.0將是黑色的,1.0是白色的)。

例如在HSL深黃色爲49.5/0.893/0.497,深藍色爲248.3/0.601/0.373,因此您可以清楚地看到深藍色像素的亮度(亮度)爲0.373,深黃色的亮度僅爲0.497,因此深藍色肯定比黃色(接近黑色)更「黑暗」,這可以解決你的第一個問題。

哪個像素更紅?紅色是0.0/1.0/0.5。您可以計算每個組件的理想紅色像素的偏離程度。無論是平等地「衡量」所有組件,還是將色調(色彩)差異視爲比其他差異更重要(以及以何種因素),都取決於您對紅色的定義。如果你想要,你可以完全按照色調去。

這頁有關於如何一步HSL RGB一步轉換一個好用的祕方(和回來,如果你要): http://130.113.54.154/~monger/hsl-rgb.html

爲了讓您的HSL色彩空間看起來像一個想法,這裏是維基百科的一些圖片,嘗試想像這種色彩空間:

http://upload.wikimedia.org/wikipedia/commons/c/cb/HSL_color_solid_cylinder_alpha_lowgamma.png

http://upload.wikimedia.org/wikipedia/commons/a/a0/Hsl-hsv_models.svg

HSV是與HSL共享一些屬性的替代色彩空間,但我個人更喜歡HSL。兩者都使用相同的色相H定義,但它們使用非常不同的飽和度定義,因此也有不同的亮度/亮度定義。

3

您可以在您的RGB圖像(r = x,g = y,b = x)上使用3維distance公式。所以要得到最接近黑色的p1 =(0,0,0),並且是當前的像素顏色。距黑色最近的像素將是距離最近的像素。紅色用(255,0,0)代替p1並重復。

+0

嘗試(255,0,255)和(255,255,0},兩者同樣遙遠或「紅色」,歐氏距離不在眼睛感覺的附近,但這取決於你的「紅色」定義,當然 – 2011-03-10 15:16:30

+0

是的,這裏的主要問題是創建了免費的顏色,以及黃色比青色顯得更少的事實。也許您還想重視p2.r-p2.g與紅色和黃色接近的任何像素之間的差異(p2)有255- | p2.r-p2.g |增加了它的重量,可以讓你遠離黃色,但不知道這個問題, – cmaynard 2011-03-10 16:02:10

+0

對,我只是試圖指出difficulti在「你的顏色」的東西的定義中。 HSL表現可能對黑人和白人更容易一些,但其餘的則不然。我還懷疑,在一般情況下,兩個人將以同樣的方式進行分類。 – 2011-03-10 16:08:58

相關問題