朱寧賢



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