2014-11-12 21 views
7

Tôi cần tạo bảng màu của 5 màu chiếm ưu thế hàng đầu trong một hình ảnh. Tôi muốn nhân rộng kết quả của Embedly's extract tool hoặc Color Thief.Tạo bảng màu từ hình ảnh bằng ImageMagick

Lệnh sau mang lại cho tôi kết quả hơi khác nhau:

convert testimage.jpg -format %c -colorspace LAB -colors 5 histogram:info:- | sort -n -r 
    157154: (19, 28, 35) #131C23 srgb(19,28,35) 
    16164: (27, 51, 77) #1B334D srgb(27,51,77) 
    15725: (79, 88, 84) #4F5854 srgb(79,88,84) 
     8608: (44, 77,103) #2C4D67 srgb(44,77,103) 
     5149: (84,126,150) #547E96 srgb(84,126,150) 

tôi là một chút không chắc chắn nếu tôi nên quantize đến 5 màu sắc như tôi đã phát hiện ra rằng làm như vậy không làm việc rất tốt với đồ họa đơn giản (ví dụ: biểu trưng của Google). Sử dụng bảng màu lớn hơn có tốt hơn không và sau đó chỉ cần chọn các màu n hàng đầu?

Điều này dẫn tôi đến câu hỏi tiếp theo của tôi liên quan đến thuật toán lượng tử được sử dụng. Nhìn vào kết quả của Nhúng chiết xuất, màu đầu ra không nhất thiết phải là thường xuyên nhất nhưng dường như là các cụm là khác nhau nhất từ mỗi khác.

Ví dụ: giả sử tôi có một hình ảnh rất tối (đen/nâu) với một chi tiết nhỏ màu đỏ tươi. Làm cách nào để đảm bảo rằng ImageMagick có màu đỏ? (xin lỗi nếu điều này nghe có vẻ ngu ngốc, lý thuyết màu sắc là tất cả mới với tôi!).

Dưới đây là hình ảnh tôi đã sử dụng để thử nghiệm:

enter image description here

Trả lời

16

Bạn có thể xác định "5 màu sắc chủ đạo hàng đầu", xin vui lòng? Tôi nghĩ rằng đây không phải là dễ dàng như nó có vẻ ...

này được thể hiện rõ ràng bởi các kết quả khác nhau mà có thể được nhìn thấy khi truy cập vào liên kết mà bạn cung cấp cho Embed.ly 's và cho Màu Thief giải thích về hình ảnh thử nghiệm của bạn.

Embed.ly

Đây là những gì Nhúng.ly liệt kê như 5 màu chiết xuất của nó (tôi nhìn vào mã nguồn HTML của trang để tìm hiểu):

rgb(13, 28, 37) 
rgb(44, 74, 94) 
rgb(71, 112, 131) 
rgb(105, 147, 163 
rgb(198, 209, 216) 

Sử dụng ImageMagick để tạo ra một bảng màu với những 5 màu:

convert      \  
    -size 60x60    \  
     label:"  Embed.ly" \ 
     xc:"rgb(13, 28, 37)"  \  
     xc:"rgb(105, 147, 163" \  
     xc:"rgb(71, 112, 131)" \  
     xc:"rgb(44, 74, 94)"  \  
     xc:"rgb(198, 209, 216)" \ 
    +append     \  
     embedly-palette-from-testimage.jpg 

Look vào kết quả:

Embed.ly's pick of 5 colors...

Màu Thief

Màu tên Thief một màu như "thống trị" màu:

rgb(21, 30, 38) 

Màu Thief cũng liệt kê một bảng màu của hơn 9 màu sắc (một lần nữa, các giá trị lấy từ mã nguồn HTML):

rgb(18, 27, 35) 
rgb(100, 142, 164) 
rgb(51, 84, 110) 
rgb(32, 53, 74) 
rgb(47, 46, 43) 
rgb(83, 85, 76) 
rgb(145, 143, 128) 
rgb(106, 141, 140) 
rgb(62, 84, 81) 

Sử dụng ImageMagick để tạo ra một bảng màu với màu sắc 9 pallete màu Thief của:

convert      \  
    -size 60x60    \  
     label:"  Color Thief" \ 
     xc:"rgb(18, 27, 35)"  \  
     xc:"rgb(100, 142, 164)" \ 
     xc:"rgb(51, 84, 110)"  \  
     xc:"rgb(32, 53, 74)"  \  
     xc:"rgb(47, 46, 43)"  \  
     xc:"rgb(83, 85, 76)"  \  
     xc:"rgb(145, 143, 128)" \ 
     xc:"rgb(106, 141, 140)" \ 
     xc:"rgb(62, 84, 81)"  \  
    +append     \  
     ct-palette-from-testimage.jpg 

Nhìn vào kết quả:

Color Thief's palette of 9 extracted colors...

Màu Thief được dựa trên quantize.js. Sử dụng thuật toán cắt trung bình được cung cấp bởi quantize.js để nhóm các màu tương tự và sau đó trả lại màu cơ sở từ cụm lớn nhất làm màu "thống trị".

Cách xác định màu nào sẽ trả về dưới dạng "màu bảng màu" có thể được xác định từ mã nguồn của nó, là hosted on Github.

5 màu sắc lượng tử ImageMagick của

Câu hỏi của bạn liệt kê các sản phẩm của histogram ImageMagick sau khi lượng tử hóa hình ảnh để chỉ có 5 màu sắc.

Sử dụng những 5 màu sắc để tạo ra một bảng màu:

convert      \ 
    -size 60x60    \ 
     label:" ImageMagick" \ 
     xc:"srgb(19,28,35)"  \ 
     xc:"srgb(79,88,84)"  \ 
     xc:"srgb(44,77,103)"  \ 
     xc:"srgb(27,51,77)"  \ 
     xc:"srgb(84,126,150)"  \ 
    +append     \ 
     im-palette-from-testimage.jpg 

Nhìn vào kết quả:

ImageMagick's 5 quantized colors...

So sánh 3 bảng màu

Sử dụng lệnh này để tạo so sánh trực quan của 3 bảng màu:

convert         \ 
     ct-palette-from-testimage.jpg   \ 
     embedly-palette-from-testimage.jpg \ 
     im-palette-from-testimage.jpg   \ 
    -append        \ 
     color-palettes.jpg 

Kết quả:

Direct visual comparison of 3 created color palettes...

Như rõ ràng có thể thấy, không phải màu Thief cũng không phải là 5 màu sắc lượng tử từ histogram ImageMagick của ta bao gồm các màu 5th khá sáng sủa trả về bởi Embed.ly.

Hãy so sánh một lần nữa để hình ảnh thử nghiệm của bạn:

Test image...

"Là nó tốt hơn để sử dụng một bảng màu lớn hơn và sau đó chỉ cần chọn n màu sắc hàng đầu?"

Tại sao bạn không thử nghiệm và tự tìm hiểu?

+0

+1 Câu trả lời hay, Kurt - cũng được nghiên cứu và giải thích rõ. –

+0

Tôi đã thử điều này bằng cách sử dụng số lượng cắt giảm trung bình đã sửa đổi (MMCQ) và đang nhận được kết quả gần hơn với dịch vụ của dịch vụ nhúng. Theo [giấy trắng] (http://www.leptonica.com/papers/mediancut.pdf), điều này cho kết quả tốt hơn cho các hình ảnh có màu sắc dân số rất dễ nhìn thấy nhưng thấp. –

+0

Tôi không nghĩ rằng hãy nói với ai đó để kiểm tra một cái gì đó và "tìm ra chính mình" là thực sự thích hợp cho một trang web Hỏi & Đáp. – Skrylar

Các vấn đề liên quan