金昊 成希
引言:數(shù)字圖像處理又被稱為計(jì)算機(jī)圖像處理,是指將獲取到的圖像信號(hào)利用計(jì)算機(jī)將其轉(zhuǎn)化為數(shù)字信號(hào)的處理過程。隨著計(jì)算機(jī)信息技術(shù)的不斷發(fā)展,數(shù)字圖像處理技術(shù)也得到了較快的發(fā)展,目前數(shù)字圖像處理技術(shù)能夠?qū)D像進(jìn)行編碼、復(fù)原、增強(qiáng)、壓縮等,使得其在國防領(lǐng)域、軍事領(lǐng)域、圖像傳輸領(lǐng)域等起著極其重要的作用。對(duì)于圖像處理中的格式轉(zhuǎn)換和圖像增強(qiáng)處理,需要用戶具有一定計(jì)算機(jī)程序方面和軟件應(yīng)用方面的知識(shí),以下就簡單的分析基于VC++在數(shù)字圖像處理中的格式轉(zhuǎn)換和增強(qiáng)處理。
前言
對(duì)于數(shù)字圖像處理,將CMOS或CCD圖像感應(yīng)器捕捉到的未經(jīng)過加工的RAW圖像轉(zhuǎn)換為Windows標(biāo)準(zhǔn)圖像文件格式是一項(xiàng)最基本功能,對(duì)此本文就簡單的分析了一個(gè)圖像處理小軟件,分析該軟件對(duì)圖像的格式轉(zhuǎn)換以及圖像增強(qiáng)操作,并顯示出來。
一、系統(tǒng)的詳細(xì)設(shè)計(jì)
(一)基類設(shè)計(jì)
BMP文件格式是Windows操作系統(tǒng)所支持并推薦的一種圖像文件格式,它是一種顯示器和內(nèi)存都不要經(jīng)過壓縮就能直接按位存盤的文件格式,其通用性很強(qiáng),所以將其他格式的文件轉(zhuǎn)換為BMP文件格式是必不可少的功能。我們知道DIB訪問函數(shù)Windows是支持的,但是都沒有將其封裝在MFC中,本文就嘗試的封裝了一個(gè)DIB類,具體包括了其成員函數(shù)與成員變量,從而實(shí)現(xiàn)派生其他類的目的,以實(shí)現(xiàn)移植[1]。我們?cè)賹⒃摶惤y(tǒng)一命名,并且算法都由該基類派生。
(二)函數(shù)功能
數(shù)字圖像處理軟件根據(jù)實(shí)際的需求,其功能大致較為接近,如tretchDIBits函數(shù),其功能是將DIB矩形區(qū)域中的像素使用的顏色復(fù)制到指定的目標(biāo)矩形內(nèi),如果源矩形的大小要小于目標(biāo)矩形,則函數(shù)會(huì)對(duì)顏色數(shù)據(jù)的列和行進(jìn)行拉伸,從而使源矩形能夠和目標(biāo)矩形相匹配,反之進(jìn)行壓縮。除了該函數(shù)外,還有hdc函數(shù)、XDest函數(shù)、YDest函數(shù)、nDestWidth函數(shù)、nDestHeight函數(shù)、XSrc函數(shù)、YSrc函數(shù)等[2]。
二、將RAW圖像格式轉(zhuǎn)化為BMP圖像格式
數(shù)字圖像處理軟件將RAW圖像格式轉(zhuǎn)化為BMP圖像格式的原理如下:由于數(shù)字圖像表示的是近似的連續(xù)圖像,通常圖像的顯示是由采樣點(diǎn)組成的矩形,然后對(duì)數(shù)字圖像的灰度按照不同的方式存儲(chǔ),從而得到不同格式的圖像。
(一)實(shí)現(xiàn)的步驟
1、首先根據(jù)自己的需求建立一個(gè)圖像文件夾。
2、利用AppWizard生成一個(gè)自己命名的多文檔項(xiàng)目。
3、構(gòu)建一個(gè)微軟基礎(chǔ)類庫項(xiàng)目,然后在主程序中增添3個(gè)文件,文件名分別是dibap.h、dibapa.cpp、myfile.cpp。
4、在菜單選項(xiàng)中添加RAW格式轉(zhuǎn)化為BMP格式的對(duì)話框、對(duì)話框類、菜單項(xiàng)函數(shù)。消息響應(yīng)函數(shù)。
5、在建立的對(duì)話框中鍵入需要的值。這里具體程序就不詳細(xì)列出。
6、在DOC中增添讀寫函數(shù)與初始化函數(shù),然后在View中OnDaw函數(shù)中增添對(duì)應(yīng)函數(shù),使圖像信息能夠顯現(xiàn)[3]。
(二)注意事項(xiàng)
首先是Windows操作系統(tǒng)所支持的BMP圖像格式中的寬度僅是4的倍數(shù),如果RAW格式中不滿足則需要補(bǔ)0操作;其次是在程序中指針和句柄的使用容易產(chǎn)生誤區(qū),所以在程序中需要明確的指出指針指向的位置;再者是對(duì)于程序異常需要及時(shí)的處理,發(fā)現(xiàn)即處理,否則在后期處理時(shí)的難度和工作量將會(huì)增大,并且容易導(dǎo)致程序出現(xiàn)漏洞;最后是編程過程中對(duì)C++語言的熟練運(yùn)用能夠幫助我們更加清楚的掌握?qǐng)D形結(jié)構(gòu)。
三、實(shí)現(xiàn)BMP圖像灰度線性拉伸
編碼實(shí)現(xiàn)BMP圖像灰度線性拉伸的主要原理如下:線性拉伸是數(shù)字圖像處理中常用的一種點(diǎn)運(yùn)算方法,其主要的核心在于線性灰度變換函數(shù),圖像中選取的點(diǎn)的灰度按照該函數(shù)進(jìn)行處理,利用該變換函數(shù)能夠?qū)崿F(xiàn)圖像的亮度、比度等操作。例如在圖像處理軟件程序中對(duì)選取的圖像像素進(jìn)行線性變換x=a*x+b,其中的a表示的是對(duì)比度,b表示亮度。
實(shí)現(xiàn)的步驟:在菜單選項(xiàng)中添加線性變換與線性變換的對(duì)話框,并在View中添加菜單選項(xiàng)的函數(shù)和對(duì)話框類,然后將得到Doc指針,再定義指針變量m_hdib,將得到第二部分的Doc指針傳給m_hdib,從而建立BMP圖像灰度線性拉伸消息響應(yīng)函數(shù)。
四、對(duì)BMP圖像的增強(qiáng)處理
高通濾波操作能夠?qū)MP圖像進(jìn)行增強(qiáng)處理,其原理如下:高通濾波處理是一種局部處理方法,它是采用了高通濾波算子卷積運(yùn)算將原圖像轉(zhuǎn)換為新銳化圖像[5]。實(shí)現(xiàn)步驟:
1、添加菜單選項(xiàng),添加高通濾波,在View中添加菜單選項(xiàng)函數(shù),得到Doc指針,建立起B(yǎng)MP圖像增強(qiáng)處理高通濾波操作消息響應(yīng)函數(shù)。
2、拷貝句柄,得到兩個(gè)句柄,得到兩個(gè)指向第二部分的指針。
3、將得到的行和列像素?cái)?shù),采用高通濾波算子和for循環(huán)進(jìn)行卷積運(yùn)算,運(yùn)算好后進(jìn)行刷新,最后將得到高通濾波后的銳化圖像。
五、結(jié)束語
隨著計(jì)算機(jī)技術(shù)的發(fā)展,數(shù)字圖像處理技術(shù)已運(yùn)用到各個(gè)領(lǐng)域,并取得了重大的成就。目前數(shù)字圖像處理技術(shù)的內(nèi)容主要包含了圖像數(shù)字化、圖像恢復(fù)、圖像增強(qiáng)、圖像壓縮、圖像編碼、圖像分析等,并且隨著軟件技術(shù)的提高,其處理的能力和精度將進(jìn)一步的提高。本文主要分析了一個(gè)VC++數(shù)字圖像處理小程序,分析了它的設(shè)計(jì)和具體的格式轉(zhuǎn)換以及圖像增強(qiáng)問題,研究了數(shù)字圖像處理中的格式轉(zhuǎn)換實(shí)現(xiàn)步驟和增強(qiáng)步驟,以為相關(guān)人士提供借鑒。
參考文獻(xiàn)
[1]張紅軍,蔡利棟.Tina平臺(tái)的功能增強(qiáng)——多種圖像格式轉(zhuǎn)換和彩色圖像顯示[J].長春理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,33(2):125-128.
[2]楊小寧,鄭善賢,王煉紅等.一種基于FPGA的圖像格式轉(zhuǎn)換設(shè)計(jì)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(11):246-248.
[3]楊華,佟首峰.基于FPGA的Bayer到RGB圖像格式轉(zhuǎn)換設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2010,33(2):122-124.
[4]韓姣.基于VC+ +的BMP格式圖像與GIF格式圖像轉(zhuǎn)換[J].武漢理工大學(xué)學(xué)報(bào)(信息與管理工程版),2007,29(12):23-25,30.
[5]李進(jìn)文,安博文.FPGA中Bayer到Y(jié)CbCr圖像格式轉(zhuǎn)換的設(shè)計(jì)[J].電視技術(shù),2013,37(23):54-56,84.
(作者單位:南京總參第六十研究所)