【共享插件017】色彩提取.cdr文檔打開后,如警告有宏,選擇“啟用宏”,用戶界面跳出:
如無提示也無用戶界面出現(xiàn),請修改CorelDRAW的安全等級為“中”。插件使用的有關設置參見作者以往發(fā)布的001~014號插件。
文檔的前兩個頁面為作者制作的六個色彩提取案例。
可以把右側的提取色塊刪除掉,以便給新生成的提取色塊騰出地方。
在場景中選中一個源圖,然后點擊“Load Pic”按鈕,源圖出現(xiàn)在按鈕下方,表示圖片加載成功,同時執(zhí)行按鈕“Go!”變?yōu)榭捎脿顟B(tài)。
簡單介紹一下色彩提取的原理。
這里用的是一種最簡單的聚類技術,即“K-Means”聚類。用戶指定要提取的色彩數(shù)量,填在“色彩數(shù)”輸入框里,如5種。圖片中所有的像素即被分為5類。分類依據(jù)是把色彩的RGB值當成一個三維空間(即色彩空間)內(nèi)的坐標,依次計算各像素色彩的坐標與5個分類中心的距離,然后歸入最近的那個類。
分類中心怎么確定呢?最初是系統(tǒng)給定的,有兩種方式:明度序列和色相序列,即面板上“明度”和“色相”兩個選項。選“明度”時,得到的初始分類中心是從白到黑5種灰度;選“色相”時,是均布在色相環(huán)上的5種彩色。
第一次歸類計算后,每個分類中心旗下各聚斂了一批像素。對這些像素的色彩空間坐標求平均,也就是把N個X坐標值加起來除以N,得到一個新的X值。Y和Z也一樣處理。最后每個類可以計算出一個新的坐標,即新的分類中心。
以這個新的分類中心對圖片像素進行重新分類。該過程循環(huán)進行若干次,直到分類中心不再發(fā)生變化,此時5個分類中心即提取出來的5種色彩,各類中的像素數(shù)代表了該色在圖像中所占的比例值。
實驗表明,對一般圖片15次循環(huán)后分類中心的色彩變化已經(jīng)小到肉眼無法覺察,因此本插件只計算15次。
選擇“色相”模式的初始分類中心,色彩提取結果有時會不足數(shù),幾種色彩類別的像素數(shù)量為零,所以實際提取出的色彩數(shù)比指定的數(shù)字要少。
點擊按鈕“Go!”,上述過程被啟動。
色彩提取完成后,以兩種形式輸出。一種是顯示在用戶界面上,“Go!”按鈕下方的色標區(qū),色標的高度表示該色類中的像素數(shù)量:
另一種是顯示在源圖右側:
方塊面積表示該色類中的像素數(shù)量。所有色塊拼成一個與源圖等大的方塊,可以直觀地看出每種色彩所占的比例大小。色彩比例是經(jīng)過排序的,從左到右、從上到下遞減,右下角的色彩比例最小。畫色塊時,程序自動忽略像素數(shù)為零的色彩。
程序會自動判斷源圖是landscape(橫的)還是portrait(豎的),并給出相應的色塊畫法,主要目的是讓色塊的長寬尺寸不要相差太大。
下圖是portrait式源圖的色標,可以看到,第一個色塊(代表占比最大的色彩)在上方而不是左側,因為畫在左側它會變得細長而讓用戶失去了對面積的準確感知。
其實這個插件的大部分代碼都是013號插件“織毛衣”里直接搬來的,只有色標的畫法加了點小創(chuàng)意。
很多軟件都提供了從圖像中提取色彩的功能,有些網(wǎng)站上還可以在線取色。我們編寫這個插件的主要興趣還是在提取色的應用,就像今天早晨我看到的這個咖啡杯的圖案。
用戶界面左下方的“制作條紋”按鈕在一個新建立的頁面上制作100條寬度隨機的橫條紋,下圖是它們剛做好沒上色的樣子。
用當前提取色給這些條紋上色之前需要一個預備動作:點擊“選當前頁”按鈕激活“上色”按鈕。這是一個安全措施,因為上色按鈕會修改當前頁內(nèi)所有對象的色彩,誤按的后果比較嚴重,無法用Ctrl+Z取消。因此設置這樣一個強迫用戶選擇當前頁的動作。
上色后的條紋。
條紋上色有兩條規(guī)則:一是按照色彩比例來分配每一種色彩出現(xiàn)的概率;二是相鄰的條紋色彩相同時,其中一個條紋被改為白底色以避免同色相鄰。
上色完成后,“上色”按鈕變回不可用狀態(tài)。