簡體   English   中英

使用Python查找具有類似調色板的圖像

[英]Find images with similar color palette with Python

假設圖庫中有10,000個JPEG,PNG圖像,如何找到具有相似調色板的所有圖像到選定圖像,並按降序相似度排序?

為每個圖像構建顏色直方圖。 然后,當您想要將圖像與集合匹配時,只需按照直方圖與所選圖像的直方圖的接近程度對列表進行排序。

桶的數量取決於您想要的准確度。 組合成一個存儲桶的數據類型將定義您如何確定搜索的優先級。

例如,如果您對色調最感興趣,那么您可以定義圖像的每個像素所在的桶:

def bucket_from_pixel(r, g, b):
    hue = hue_from_rgb(r, g, b) # [0, 360)
    return (hue * NUM_BUCKETS) / 360

如果您還需要通用匹配器,則可以根據完整的RGB值選擇存儲桶。

使用PIL,您可以使用內置histogram功能。 可以使用您想要的任何距離測量來計算“接近度”直方圖。 例如,L1距離可以是:

hist_sel = normalize(sel.histogram())
hist = normalize(o.histogram()) # These normalized histograms should be stored

dist = sum([abs(x) for x in (hist_sel - hist)])

L2將是:

dist = sqrt(sum([x*x for x in (hist_sel - hist)]))

Normalize只是強制直方圖的總和等於某個常數值(1.0工作正常)。 這很重要,因此可以將大圖像與小圖像進行正確比較。 如果您要使用L1距離,那么您應該在normalize使用L1度量。 如果L2,那么L2。

你的問題已經得到了解答。 看看這些其他SO答案:

尋找相似圖像的算法

如何量化兩幅圖像之間的差異?

暫無
暫無

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

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