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