黨媛媛,陳兆學(xué)
(上海理工大學(xué)健康科學(xué)與工程學(xué)院,上海 200093)
在圖像處理和計(jì)算機(jī)視覺(jué)領(lǐng)域,標(biāo)準(zhǔn)色卡通常用于定位和校準(zhǔn)圖像中的顏色信息[1]。傳統(tǒng)的標(biāo)準(zhǔn)色卡定位方法通常需要人工交互手動(dòng)提取色卡中的顏色信息,當(dāng)有大量的色卡待提取顏色信息時(shí),該方法效率極低。因此,研究如何自動(dòng)實(shí)現(xiàn)標(biāo)準(zhǔn)色卡的定位和識(shí)別是當(dāng)前的研究熱點(diǎn)之一。目前,國(guó)內(nèi)外已有相關(guān)研究及成果,JACKOWSKI等[2]提出了一種半自動(dòng)色卡檢測(cè)的算法,即先手動(dòng)注釋補(bǔ)丁角,再利用有理高斯曲面和超曲面建模及模板匹配知識(shí)對(duì)色卡進(jìn)行幾何變形。樊明杰[3]和KORDECKI等[4]提出了基于顏色聚類(lèi)的色卡自動(dòng)識(shí)別方法,均先對(duì)圖像進(jìn)行形態(tài)學(xué)處理,再利用K-means算法聚類(lèi)顏色簇定位標(biāo)準(zhǔn)色卡。葛超[5]提出了一種將尺度不變特征(SIFT)與隨機(jī)抽樣一致匹配算法相結(jié)合的色卡信息提取方法。
在真實(shí)采集環(huán)境下,不可避免地存在色卡傾斜、旋轉(zhuǎn)、彎曲及多色卡同時(shí)采集等情況。以上方法針對(duì)性強(qiáng)但魯棒性差,難以實(shí)現(xiàn)各種場(chǎng)景下色卡自適應(yīng)識(shí)別和精準(zhǔn)定位。為彌補(bǔ)上述既有方法的不足,本文提出了一種結(jié)合AKAZE 特征檢測(cè)、FLANN特征匹配與RANSAC算法的色卡自動(dòng)識(shí)別與顏色信息自動(dòng)提取方法。通過(guò)實(shí)驗(yàn)表明該方法能快速、準(zhǔn)確地定位不同場(chǎng)景下的色卡圖像和提取顏色信息,便于后續(xù)的顏色校正和圖像特征自動(dòng)分析處理工作。
標(biāo)準(zhǔn)色卡是一種用于標(biāo)準(zhǔn)化和比較顏色的工具,通常由國(guó)際標(biāo)準(zhǔn)化組織(ISO)或其他行業(yè)組織制定,并根據(jù)特定的顏色空間(如RGB、CMYK 或LAB等)和顏色體系進(jìn)行編碼和標(biāo)識(shí),其中X-Rite Color Checker 24色標(biāo)準(zhǔn)色卡具有極佳的穩(wěn)定性,在顏色校正領(lǐng)域被廣泛使用。該顏色檢查器包含24個(gè)色標(biāo),其RGB參考值由官方提供,確保目標(biāo)值的準(zhǔn)確性。這些色標(biāo)的很多顏色代表自然界對(duì)象,例如天空、草地和皮膚等,可以在任何光照條件下與其自然物體的色彩互相匹配[6],帶有24個(gè)色標(biāo)的X-Rite色卡如圖1所示。在采集目標(biāo)物體圖像的同時(shí),拍攝標(biāo)準(zhǔn)色卡,則可將其用作視覺(jué)參考以輔助任何色彩再現(xiàn)流程,也常常用于評(píng)價(jià)成像設(shè)備拍攝圖像的顏色校正質(zhì)量。
圖1 愛(ài)色麗24色標(biāo)準(zhǔn)色卡Fig.1 X-Rite Color Checker Classic with 24 colors
本文提出的結(jié)合AKAZE特征檢測(cè)、FLANN 特征匹配與RANSAC誤匹配剔除的標(biāo)準(zhǔn)色卡自動(dòng)識(shí)別與顏色信息提取方法的主要實(shí)現(xiàn)步驟如下。
(1)利用AKAZE算法提取標(biāo)準(zhǔn)色卡及包含標(biāo)準(zhǔn)色卡的待檢測(cè)圖像中的特征點(diǎn),并利用FLANN算法建立兩幅圖像特征點(diǎn)集合的映射關(guān)系,從而得到特征匹配點(diǎn)集合,進(jìn)而大致識(shí)別出標(biāo)準(zhǔn)色卡在待檢測(cè)圖像中的位置[7]。
(2)通過(guò)RANSAC算法過(guò)濾特征匹配點(diǎn)集合中的誤匹配點(diǎn),從而得到更準(zhǔn)確的匹配點(diǎn)集[8]。
(3)根據(jù)“步驟(2)”中的匹配點(diǎn)集,將匹配條件設(shè)為10,選擇兩幅圖像中相似性最高的關(guān)鍵點(diǎn)位置坐標(biāo)計(jì)算透視變換矩陣M。
(4)根據(jù)透視變換矩陣M,校正待檢測(cè)圖像中標(biāo)準(zhǔn)色卡的角度,并提取24個(gè)色標(biāo)的顏色信息。由于X-Rite顏色檢查器的材質(zhì)會(huì)造成漫反射,色卡上或多或少地存在噪聲,因此這里選取每個(gè)色標(biāo)中心的一定區(qū)域,采用基于均值的方法計(jì)算每個(gè)色塊的顏色值[9]。設(shè)計(jì)的算法流程架構(gòu)如圖2所示。
圖2 本文算法流程圖Fig.2 Algorithm flow chart
在計(jì)算機(jī)視覺(jué)圖像處理領(lǐng)域提取圖像局部特征的各種算法中,比較經(jīng)典的有尺度不變特征(Scale-Invariant Feature Transform,SIFT)和加速穩(wěn)健特征(Speeded Up Robust Features,SURF)算法[10-11]。這兩種算法提取的圖像特征都具有旋轉(zhuǎn)和尺度不變性,并且采用金字塔結(jié)構(gòu);然而在構(gòu)造不同尺度空間時(shí),常用的高斯模糊算法難以保持目標(biāo)物體的邊緣信息,于是ALCANTARILLA等[12]提出了AKAZE特征檢測(cè)方法。相比傳統(tǒng)的線(xiàn)性尺度空間,非線(xiàn)性尺度空間能夠更好地模擬圖像的局部結(jié)構(gòu),并且在多尺度特征檢測(cè)中能夠更好地保留特征。與SIFT、SURF等算法相比,AKAZE算法利用非線(xiàn)性尺度空間進(jìn)行圖像特征檢測(cè)的速度更快,并且其可重復(fù)性與魯棒性更高。
1.1.1 構(gòu)造非線(xiàn)性尺度空間
為了解決高斯尺度空間邊緣模糊的問(wèn)題,引入非線(xiàn)性擴(kuò)散濾波[13]。該方法描述了圖像亮度L在不同尺度上隨時(shí)間變化的規(guī)律,可以描述如下:
其中,div表示散度,?代表梯度算子,L表示圖像亮度,c(x,y,t)取決于圖像差分結(jié)構(gòu)的傳導(dǎo)函數(shù),決定了圖像平滑程度和邊緣保留程度,可以根據(jù)像素相似性自適應(yīng)地調(diào)整,公式表示如下:
為了實(shí)現(xiàn)特征的快速計(jì)算,提高尺度空間的構(gòu)建速度,利用快速顯性擴(kuò)散算法(Fast Explicit Diffusion,FED)求解公式(1)的非線(xiàn)性偏微分方程,得到非線(xiàn)性尺度圖像[14],定義如下:
公式(4)和公式(5)中,I是單位矩陣,τj為時(shí)間步長(zhǎng),τmax表示最大時(shí)間步長(zhǎng),L i表示第i次迭代包含的圖像像素點(diǎn)灰度值的向量,通過(guò)計(jì)算第i幅圖像傳導(dǎo)矩陣A(L i)就可以得到第i+1幅圖像,從而構(gòu)造出非線(xiàn)性尺度空間圖像序列關(guān)系。
AKAZE算法在構(gòu)建非線(xiàn)性尺度空間時(shí)采用金字塔型結(jié)構(gòu),其中尺度級(jí)別按對(duì)數(shù)遞增排列[15]。算法構(gòu)建了一個(gè)包含多個(gè)圖像的金字塔結(jié)構(gòu),每個(gè)圖像在空間和尺度上都不同,尺度空間的構(gòu)建是通過(guò)對(duì)原始圖像進(jìn)行多次高斯模糊實(shí)現(xiàn)的,每個(gè)模糊后的圖像被稱(chēng)為一個(gè)尺度級(jí)別,與SIFT、SURF算法等其他線(xiàn)性構(gòu)造尺度空間方法都不同。具體來(lái)說(shuō),一共O組圖像,每組圖像有S個(gè)子層,各層圖像尺度參數(shù)表示如下:
公式(6)中,σ0表示尺度參數(shù)的初始基準(zhǔn)值,N=O×S是整個(gè)尺度空間中圖像的總數(shù)。由于非線(xiàn)性擴(kuò)散濾波是用于時(shí)間序列的方法,而公式(6)計(jì)算得到的結(jié)果是像素級(jí)別的灰度值,因此需要將像素尺度轉(zhuǎn)化為時(shí)間尺度,以便構(gòu)造非線(xiàn)性尺度空間。具體而言,可以將像素尺度轉(zhuǎn)化為時(shí)間尺度,進(jìn)而得到每層尺度空間中的時(shí)間參數(shù),然后按照時(shí)間參數(shù)構(gòu)造非線(xiàn)性尺度空間,從而實(shí)現(xiàn)對(duì)圖像的多尺度特征提取和匹配:
1.1.2 特征點(diǎn)檢測(cè)
非線(xiàn)性尺度空間構(gòu)造完成后,需要計(jì)算不同尺度下金字塔每一層濾波圖像L i的Hessian行列式[16]:
圖3 特征點(diǎn)檢測(cè)原理圖Fig.3 Schematic diagram of feature point detection
特征具有旋轉(zhuǎn)不變性,在確定圖像特征點(diǎn)的位置后,以此為原點(diǎn)尋求特征點(diǎn)的主方向。計(jì)算特征點(diǎn)圓形區(qū)域內(nèi)所有鄰點(diǎn)的一階微分值并進(jìn)行高斯加權(quán),接著將其作為響應(yīng),采用一個(gè)60°扇形滑動(dòng)窗口局部遍歷所有的像素點(diǎn),并對(duì)滑動(dòng)窗口內(nèi)像素點(diǎn)的響應(yīng)值進(jìn)行求和。在求和過(guò)程中,值最大的方向即為特征點(diǎn)的主方向。
為了提高算法的運(yùn)行速度,實(shí)現(xiàn)特征匹配的實(shí)時(shí)性,本文選擇快速最近鄰搜索算法(Fast Library for Approximate Nearest Neighbors,FLANN)對(duì)特征點(diǎn)進(jìn)行匹配[17]。FLANN算法與其他特征匹配方法(如暴力匹配法)相比,可以更有效地匹配具有高維或大規(guī)模數(shù)據(jù)集的特征。FLANN基于歐式距離從實(shí)例點(diǎn)的最近鄰域搜索到最近的點(diǎn),當(dāng)兩個(gè)關(guān)鍵點(diǎn)之間的距離小于匹配閾值時(shí),它們會(huì)被標(biāo)記為匹配對(duì)。在本實(shí)驗(yàn)中,將匹配閾值設(shè)置為0.8。N維空間中,歐式距離的數(shù)學(xué)定義如下:
其中,D(x,y)表示歐式距離,i代表空間維度。FLANN 算法流程如下。
(1)構(gòu)建隨機(jī)樹(shù):首先建立隨機(jī)樹(shù)將N維空間中的數(shù)據(jù)進(jìn)行排序,選擇中位數(shù)作為根節(jié)點(diǎn),然后將數(shù)據(jù)集分成兩個(gè)子集,分別遞歸構(gòu)建左子樹(shù)和右子樹(shù),直到每個(gè)葉節(jié)點(diǎn)只包含一個(gè)數(shù)據(jù)點(diǎn)或者達(dá)到預(yù)設(shè)樹(shù)的深度。
(2)索引:將構(gòu)建好的隨機(jī)樹(shù)分別按照深度優(yōu)先、廣度優(yōu)先、最近鄰優(yōu)先等方式進(jìn)行遍歷,對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行索引,計(jì)算每個(gè)節(jié)點(diǎn)的劃分平面和劃分維度,記錄節(jié)點(diǎn)的左、右子節(jié)點(diǎn)等信息。
(3)利用K-最鄰近算法搜索與剪枝:給定正整數(shù)K,計(jì)算所有測(cè)試數(shù)據(jù)的歐式距離,根據(jù)距離進(jìn)行升序排序,選取距離最小的K個(gè)點(diǎn),根據(jù)單個(gè)數(shù)據(jù)占前K個(gè)數(shù)據(jù)距離的比值綜合計(jì)算前K個(gè)數(shù)據(jù)的類(lèi)別,從而判斷測(cè)試數(shù)據(jù)的類(lèi)別。在訪(fǎng)問(wèn)每個(gè)節(jié)點(diǎn)時(shí),計(jì)算查詢(xún)點(diǎn)到節(jié)點(diǎn)劃分平面的距離,如果小于當(dāng)前最近鄰的距離,則更新最近鄰。在搜索過(guò)程中,根據(jù)查詢(xún)點(diǎn)與節(jié)點(diǎn)的距離和當(dāng)前最近鄰的距離,可以預(yù)測(cè)查詢(xún)點(diǎn)到其他節(jié)點(diǎn)的距離是否可能更小,如果不可能,則不再遞歸訪(fǎng)問(wèn)該節(jié)點(diǎn)的子樹(shù)。
(4)使用FLANN算法進(jìn)行近似最近鄰搜索高維數(shù)據(jù)時(shí),可能會(huì)出現(xiàn)“維數(shù)災(zāi)難”,導(dǎo)致搜索時(shí)間急劇增加。為解決這個(gè)問(wèn)題,FLANN算法采用局部敏感哈希(LSH)和隨機(jī)樹(shù)等技術(shù)實(shí)現(xiàn)高維數(shù)據(jù)的近似最近鄰搜索。此外,FLANN 算法提供了自動(dòng)調(diào)參的方法,可以根據(jù)數(shù)據(jù)集的特點(diǎn)自動(dòng)選擇最佳參數(shù)。當(dāng)檢查的樹(shù)葉節(jié)點(diǎn)數(shù)滿(mǎn)足預(yù)先設(shè)定的值時(shí),停止搜索,搜索的精度可由用戶(hù)設(shè)定。
1.3.8 膨脹度(SC)的測(cè)定。準(zhǔn)確稱(chēng)取約1 g的樣品,記為M,將其加入量筒中,使其所占的體積記為V1,加入10 mL蒸餾水,振搖使其均勻分散,置于25 ℃的水浴鍋恒溫24 h,使樣品充分膨脹后記錄其體積V2,并按以下公式計(jì)算:
圖像匹配對(duì)中不可避免地會(huì)存在一些錯(cuò)誤的匹配,鑒于隨機(jī)抽樣一致匹配優(yōu)化算法(RANSAC)對(duì)樣本數(shù)據(jù)有較強(qiáng)的勘誤能力且魯棒性較高,可應(yīng)用于消除特征匹配過(guò)程中產(chǎn)生的誤匹配點(diǎn)。該算法基本思想是從樣本集中給定一組(通常很小的)內(nèi)群,利用迭代方法擬合一個(gè)模型,這個(gè)模型可以估算出最佳解釋或最適用于這一數(shù)據(jù)模型的參數(shù),然后對(duì)該模型進(jìn)行評(píng)價(jià)。通過(guò)不斷迭代重復(fù)這一過(guò)程,當(dāng)?shù)螖?shù)足夠大,隨機(jī)給定的樣本點(diǎn)有可能全部屬于內(nèi)點(diǎn),從而找到最優(yōu)的擬合模型[18]。
本實(shí)驗(yàn)中RANSAC算法篩選剔除錯(cuò)誤的匹配對(duì)的步驟如下。
(1)從匹配對(duì)樣本中隨機(jī)抽取4組匹配對(duì)組成一個(gè)樣本集,計(jì)算其單應(yīng)性矩陣,模型記為Q,設(shè)定閾值為5。
(2)計(jì)算數(shù)據(jù)樣本中所有數(shù)據(jù)與模型Q的誤差,若誤差小于5,則將其視為內(nèi)點(diǎn),加入內(nèi)點(diǎn)集N。
(3)根據(jù)內(nèi)點(diǎn)集中元素個(gè)數(shù)判斷組成的內(nèi)點(diǎn)集是否為最大一致集。
(4)當(dāng)足夠多的點(diǎn)進(jìn)入內(nèi)點(diǎn)集,選擇此時(shí)的模型,重復(fù)“步驟(1)”和“步驟(2)”的操作過(guò)程,直至內(nèi)點(diǎn)集元素個(gè)數(shù)達(dá)到一定閾值,將內(nèi)群最多的模型作為該問(wèn)題的解。RANSAC剔除誤匹配后的特征檢測(cè)與匹配結(jié)果如圖4所示。
圖4 特征檢測(cè)與匹配結(jié)果Fig.4 Feature detection and matching results
本文色卡定位與顏色信息提取實(shí)驗(yàn)使用Python 語(yǔ)言及Pytorch框架實(shí)現(xiàn),實(shí)驗(yàn)環(huán)境如下:Windows 10操作系統(tǒng),處理器為Intel(R)
圖5為本文方法與基于SIFT和SURF算法的色卡檢測(cè)效果的對(duì)比圖,從實(shí)驗(yàn)結(jié)果可知,大矩形框所框選的部分即為場(chǎng)景中的標(biāo)準(zhǔn)色卡,24個(gè)小正方形大致為各色塊中心位置,盡管場(chǎng)景中有其他物體,但本文方法可以對(duì)標(biāo)準(zhǔn)色卡進(jìn)行準(zhǔn)確且有效的自動(dòng)識(shí)別。在實(shí)際的圖像采集過(guò)程中,應(yīng)盡可能地平整擺放場(chǎng)景中標(biāo)準(zhǔn)色卡,有效地避免色卡形變或陰影等因素對(duì)后期顏色校正結(jié)果的影響。此外,以上兩種方法也可以定位圖像中的色卡區(qū)域,但是基于SIFT和SURF算法的定位效果易受高斯模糊影響而難以保存邊緣信息。
圖5 色卡檢測(cè)及定位結(jié)果Fig.5 Color checker detection and positioning results
從圖5可以看出,在提取色卡中心位置,基于SIFT 和SURF的方法定位結(jié)果會(huì)有個(gè)別色塊明顯偏離色塊區(qū)域中心位置,而本文算法的結(jié)果較為準(zhǔn)確。表1是本文算法對(duì)一幀圖像進(jìn)行識(shí)別所得的24色標(biāo)準(zhǔn)色卡色塊中心位置及顏色提取結(jié)果。
表1 色卡信息Tab.1 Color checker information
為驗(yàn)證本文算法的有效性,進(jìn)一步比較不同算法的色卡檢測(cè)效果,對(duì)數(shù)據(jù)集中114幅包含標(biāo)準(zhǔn)色卡的圖片進(jìn)行色卡定位及顏色提取。圖6為使用本文方法開(kāi)展部分實(shí)驗(yàn)的結(jié)果,24個(gè)小正方形的位置即算法定位的各色塊中心位置。利用Matlab R2018a軟件搭建手動(dòng)標(biāo)定色卡各色塊中心系統(tǒng)(數(shù)據(jù)均進(jìn)行3次標(biāo)定且標(biāo)定過(guò)程互不干擾,取其平均值),將該結(jié)果作為標(biāo)準(zhǔn)色卡各色塊中心位置。圖7是基于SIFT、SURF算法與本文算法對(duì)115幅圖像進(jìn)行色卡檢測(cè)所得的24色色塊中心數(shù)據(jù)與標(biāo)準(zhǔn)色卡色塊中心位置距離的平均誤差,圖7中,“方法一”對(duì)應(yīng)SIFT算法,“方法二”對(duì)應(yīng)SURF算法,“方法三”對(duì)應(yīng)AKAZE-FLANN算法。
圖6 部分實(shí)驗(yàn)結(jié)果Fig.6 Partial experimental results
圖7 中心位置距離的平均誤差Fig.7 Center position distance error
通過(guò)圖7可知,本文提出的方法檢測(cè)出的24色色塊中心的像素誤差基本穩(wěn)定在 0~15 pixels,基本可以滿(mǎn)足場(chǎng)景下色卡定位與顏色信息提取要求。相比之下,基于SIFT 算法和SURF算法的誤差穩(wěn)定在小于30 pixels,較本文方法識(shí)別精度略低。表2是用手動(dòng)標(biāo)定SIFT、SURF算法與本文算法的色卡檢測(cè)效果的對(duì)比結(jié)果。實(shí)驗(yàn)結(jié)果顯示,運(yùn)用本文算法檢測(cè)色卡結(jié)果與人工標(biāo)定結(jié)果的一致性比其他方法好且算法運(yùn)行時(shí)間更短,表明該算法能夠更準(zhǔn)確地檢測(cè)色卡且實(shí)時(shí)性更好。
表2 算法性能對(duì)比Tab.2 Algorithm performance comparison
此外,本文算法也適用于同一場(chǎng)景下多色卡識(shí)別任務(wù),如圖8所示,圖中數(shù)據(jù)樣本包含標(biāo)準(zhǔn)色卡及膚色色卡,本文算法在色卡平整擺放、色卡傾斜擺放及色卡彎曲擺放三種情景下均可較好地完成多色卡場(chǎng)景下的色卡識(shí)別,具有一定的魯棒性。
圖8 多色卡場(chǎng)景的檢測(cè)及定位結(jié)果Fig.8 Detection results of multi-colorchecker scene
實(shí)現(xiàn)標(biāo)準(zhǔn)色卡的自動(dòng)檢測(cè),在中醫(yī)診斷、光學(xué)估計(jì)和計(jì)算機(jī)視覺(jué)等領(lǐng)域都有著重要且廣泛的應(yīng)用價(jià)值。本文在人機(jī)交互技術(shù)高度發(fā)展的背景下,為了在還原采集圖像本征色彩的過(guò)程中節(jié)約人力和時(shí)間成本,提出了一種基于A(yíng)KAZE特征檢測(cè)與匹配的標(biāo)準(zhǔn)色卡自動(dòng)化提取方法,在A(yíng)KAZE特征提取的基礎(chǔ)上,考慮運(yùn)用FLANN 算法進(jìn)行特征匹配并應(yīng)用RANSAC算法剔除誤匹配點(diǎn)。經(jīng)實(shí)驗(yàn)檢驗(yàn),本文提出的算法較好地實(shí)現(xiàn)了標(biāo)準(zhǔn)色卡中各色塊中心的快速定位與顏色信息的自動(dòng)提取,具有一定的實(shí)用價(jià)值,可以推廣應(yīng)用于醫(yī)療、食品、紡織、化妝、印刷等領(lǐng)域。