朱寧賢



摘要:MATLAB中圖像模式間的轉(zhuǎn)換是多媒體教學(xué)中非常重要的內(nèi)容。本文結(jié)合索引圖像模式與其他模式同時轉(zhuǎn)換時遇到的問題,通過具體的實驗過程解析顏色模型轉(zhuǎn)變的基本原理,并利用色圖坐標(biāo)、自定義色圖等手段,解決了在索引圖像轉(zhuǎn)換對其他類型圖像顏色模式轉(zhuǎn)換帶來的干擾問題,從而使學(xué)生更好地理解索引圖像的本質(zhì)。
關(guān)鍵詞:索引模式;色圖坐標(biāo);干擾;模式轉(zhuǎn)換
中圖分類號:TP391 文獻標(biāo)識碼:A
文章編號:1009-3044(2020)14-0223-03
1引言
在多媒體技術(shù)教學(xué)中利用MATLAB進行圖像顏色模式轉(zhuǎn)換時,可利用rgb2ind函數(shù)完成由真彩圖像到索引圖像的轉(zhuǎn)變,利用rgb2gray函數(shù)完成由真彩圖像到灰度圖像的轉(zhuǎn)變。單獨執(zhí)行rgb2ind與rgb2gray函數(shù)時,獲得的圖像都是彩色的。但當(dāng)同時利用兩個函數(shù)分別進行真彩圖像到索引圖像和由真彩圖像到灰度圖像轉(zhuǎn)換時(如圖1所示),需要同時顯示在一個figure中時:灰度圖像能夠正常顯示,但索引圖像卻未能顯示出正常顏色(如圖2所示)。
2問題解決過程探索及效果
結(jié)合課堂所講圖像轉(zhuǎn)換原理,分別通過以下三種方式進行了實驗:利用figure分別顯示、調(diào)整程序的執(zhí)行順序和使用不同的轉(zhuǎn)換函數(shù),并逐一上機驗證,對比實驗效果,進而使學(xué)生深入理解索引圖像的本質(zhì)與colormap的含義,以圖解決上述問題。
2.1 figure的使用
首先,將索引圖像和灰度圖像分別獨立顯示在不同的fig-ure中,二者都正常顯示,如圖3與圖4所示,說明程序的轉(zhuǎn)換函數(shù)本身是沒有任何問題的。
2.2代碼順序的調(diào)整
調(diào)整圖1的代碼順序(先執(zhí)行灰度、后執(zhí)行索引,顯示順序不變),如表圖5所示代碼,運行效果如圖6所示。索引圖像雖然可以正常顯示,但灰度圖像顏色變紅。
2.3轉(zhuǎn)換函數(shù)的調(diào)整
改變生成索引圖像的函數(shù),利用dither函數(shù)產(chǎn)生索引圖像(如圖7所示)。程序運行后效果圖如8所示。灰度圖像能夠正常顯示,但索引圖像顏色出現(xiàn)偏差。
2.4實驗過程分析
顯而易見,上述三種解決途徑效果都不理想。
從實驗過程中可以看到,每個處理后的圖像如果分別顯示在不同的figure中,各種效果都可以正常顯示;但同時顯示在一個figure中時即使改變函數(shù)執(zhí)行順序、改變轉(zhuǎn)變函數(shù),轉(zhuǎn)換后的圖像都存在顏色差異問題。
結(jié)合多媒體課程中圖像處理原理,從MATLAB轉(zhuǎn)換函數(shù)說明中了解到:在MATLAB中,每個figure都有(而且僅有)一個colormap色圖,它是用MAP矩陣映射當(dāng)前圖形的色圖。MAP實際上是一個mx3的矩陣,每一行的3個值都在0-1之間,分別代表顏色組成的rgb值。在MATLAB中默認(rèn)自帶18種color-map,比如jet(早期版本默認(rèn)值)、parula(新版本默認(rèn)值)、季節(jié)(Sunlmer,autumn,winter,spring)、溫度(hot,c001)、材質(zhì)(bone,copper)或顏色模式等,不同的數(shù)值表征不同的顏色,用于繪制索引圖像等種類的偽彩圖。
圖形對象一般支持兩種不同的指定顏色的方法:顏色圖(使用索引顏色)和真彩色。顏色圖的調(diào)色板有限,只能提供由m種顏色組成的調(diào)色板,其中m為顏色圖的長度;相比之下,真彩色則提供涵蓋1600多萬種顏色的調(diào)色板。由此分析發(fā)現(xiàn):索引圖像與其他圖像的不同,在一個figure中,索引生成“[TI,map]=rgb2ind(I,128);”后顏色模式與其它的顏色模式相互干擾,也就是colormap被修改的原因。因為索引圖像有兩個分量,一個是數(shù)據(jù)矩陣x,一個是彩色映射矩陣map,而rgb2ind函數(shù),需要使用map參數(shù),從而導(dǎo)致了colormap被改變,造成了顏色之間的相互影響。
3實驗過程的完善
通過上面的實驗過程和對結(jié)果的分析,進一步明確了col—ormap的作用和索引圖像的成像原理,接下來需要完善具體的實驗過程,解決同時對多種圖像轉(zhuǎn)換時存在干擾的問題。
3.1色圖坐標(biāo)colormap(ax,…)的使用
色圖坐標(biāo)colormap(ax,…)中的ax,可以設(shè)置figure中某個區(qū)域的圖形colormap,而非當(dāng)前整個figure。通過利用更改ax屬性可控制使用ax對象的外觀和行為,為圖窗中的每個坐標(biāo)區(qū)定義一個唯一的顏色圖colormap。具體來說就是根據(jù)caxis取得Cmin和Cmax兩個變量(默認(rèn)值為0和1),畫圖時自定義數(shù)值顏色向量(矩陣)C,比如將Cmax減小,根據(jù)色圖在Cmin和Cmax之間的比例關(guān)系,確定對應(yīng)的顏色的index。從本質(zhì)上講,是把具體的顏色變成colormap中相應(yīng)的index,換算映射指定的數(shù)值顏色向量(矩陣)C,通過將坐標(biāo)區(qū)對象傳遞給colormap函數(shù),返回特定坐標(biāo)區(qū)的顏色圖值。代碼如圖9所示。
3.2色圖編輯器的使用
實驗結(jié)果顯示,僅依靠利用色圖坐標(biāo)處理過后,效果依然難以令人滿意。接下來我們可以通過利用可視化的colormap編輯器調(diào)整map值來調(diào)整圖像顏色。具體做法是:在MATLAB的figure窗口中,打開“編輯”菜單,找到“色圖編輯器”,如圖10所示,通過單擊色條,自定義自己的colormap值來調(diào)整圖像顏色,直到獲得滿意的圖像效果為止。
4結(jié)論
本程序在windows7+MATLAB 7中可以執(zhí)行。如果版本不同,需要注意:第一,從MATLAB R2018版,如果為圖窗設(shè)置顏色圖,則圖窗中的坐標(biāo)區(qū)和圖將使用相同的顏色圖。以前,當(dāng)設(shè)置圖窗顏色圖時,任何顯式設(shè)置了顏色圖的坐標(biāo)區(qū)或圖都不受影響。如果希望Axes對象使用與圖窗不同的顏色圖,可以在設(shè)置圖窗顏色圖之后設(shè)置坐標(biāo)區(qū)顏色圖。第二,從MATLABR2014版,默認(rèn)colormap為parula;在以前的版本中,默認(rèn)顏色圖為jet。
總之,我們通過設(shè)置個性化的colormap和ax屬性,能夠在一定程度上解決多圖像顏色模式轉(zhuǎn)變時相互干擾的問題。同時,我們通過分析函數(shù)和figure的特點,也進一步加深了學(xué)生對圖像顏色模式以及轉(zhuǎn)換函數(shù)的理解。