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