2017-10-10 303 views
0

我有一些石頭圖像。石頭的顏色是奶油狀的,我想根據它們在顏色上的差異對圖像進行分類。我想給出最輕的石頭等級0和最黑暗的石頭等級10,並在這兩者之間對其他人進行分類。石頭非常相似,但它們的色差可以通過眼睛檢測到。
我知道是否所有的藍色石頭,例如我可以根據RGB顏色的R部分對它們進行分類。但是奶油色呢?根據顏色對圖像進行排序

enter image description here

enter image description here

+0

你能上傳一些樣本圖片嗎?你是否成功地從背景中分割出石頭?如果不是,那麼由於背景噪聲,設計基於顏色進行排序的算法將不能很好地工作。 – ZdaR

+0

@ZdaR我從石頭上傳圖片 – mohammad

回答

2

你不需要去安裝編譯器和OpenCV的複雜性和編寫/編譯Python/C++代碼來獲得圖像的平均亮度。您可以使用ImageMagick,它安裝在大多數Linux發行版上,也可用於macOS和Windows。

基本上,你可以看看「輕」HSL色彩空間或在實驗室色彩空間。


讓我們來看看HSL第一。

# Resize stone down to one average pixel, convert to HSL colourspace and print 
convert stone1.jpg -resize 1x1 -colorspace HSL txt: 

# ImageMagick pixel enumeration: 1,1,65535,hsl 
0,0: (4228.92,19250.9,52587.2) #104BCD hsl(23.2305,29.375%,80.2429%) 

因此HSL中stone1.jpg的亮度爲80.24%。讓我們嘗試stone2.jpg

convert stone2.jpg -resize 1x1 -colorspace HSL txt: 

# ImageMagick pixel enumeration: 1,1,65535,hsl 
0,0: (7387.85,27252.5,57243) #1D6ADF hsl(40.5833,41.5846%,87.3472%) 

所以,stone2.jpg爲87.35%,輕

讓我們簡化輸出,只顯示亮度:

convert stone1.jpg -colorspace HSL -format "%[fx:int(100*mean.b)]" info: 
80 

stone2.jpg

convert stone2.jpg -colorspace HSL -format "%[fx:int(100*mean.b)]" info: 
87 

現在讓我們看看實驗室 colourspace。

convert stone1.jpg -resize 1x1 -colorspace Lab txt: 

# ImageMagick pixel enumeration: 1,1,65535,cielab 
0,0: (53895.2,1140.43,2057.36) #D20408 cielab(82.2388%,1.74018%,3.13933%) 

所以,stone1.jpg有82.24%一實驗室亮度,讓我們來看看stone2.jpg

convert stone2.jpg -resize 1x1 -colorspace Lab txt: 

# ImageMagick pixel enumeration: 1,1,65535,cielab 
0,0: (59395,-21.0391,2545.27) #E7000A cielab(90.6309%,-0.36%,3.88383%) 

所以,stone2.jpg有90.6%的亮度。

如果我們想要更簡單的形式呢?

convert stone1.jpg -colorspace Lab -format "%[fx:int(100*mean.r)]" info: 
82 

什麼的百分比?它們是白色的百分比,所以純白色是100%,純黑色是0%。快速測試...

convert xc:black -colorspace Lab txt: 
# ImageMagick pixel enumeration: 1,1,65535,cielab 
0,0: (0,-0.5,-0.5) #000000000000 cielab(0%,-0.000762951%,-0.000762951%) 

convert xc:white -colorspace Lab txt: 
# ImageMagick pixel enumeration: 1,1,65535,cielab 
0,0: (65535,0.125,-1.69336) #FFFF00000000 cielab(100%,0.000190738%,-0.0025839%) 

如果你有一整個目錄全石材樣品的,你想爲每個HSL亮度值?

convert stone* -colorspace HSL -format "%f:%[fx:int(100*mean.b)]\n" info: 
stone1.jpg:80 
stone2.jpg:87 
stone3.jpg:75 
stone4.jpg:92 
2

我希望用他們的color.I差異圖像分類想給最輕的石頭0級和最黑暗的石級10和分類這兩種人之間。石頭非常相似,但它們的色差可以通過眼睛檢測到。

如果您想要從淺到深的順序排列,並考慮到色相,則RGB色彩空間不太適合。你應該看看Lab colour space或者Hue Saturation Lightness (HSL)色彩空間。

通過將圖像轉換爲其中一個顏色空間,然後取平均值,然後可以將其分類爲亮度和一個或兩個顏色/色相軸。 (這是假設圖像內容大部分是同質的)。

相關問題