白香君
摘要:雙線性插值算法是放大圖像的一種有效算法,但是隨著圖像放大比例的增加,該算法的處理速度比較慢,所以基于這種現(xiàn)狀,該文提出了雙線性插值算法的一種并行實(shí)現(xiàn)方法,為高效快速的放大圖像提供了解決方案。實(shí)驗(yàn)結(jié)果表明,并行后的算法能夠有效的提高處理圖像的速度和效率。
關(guān)鍵詞:雙線性插值;并行;提高;速度和效率
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)27-6494-03
Abstract: Bilinear interpolation algorithm is an efficient algorithm of enlarging image. But with the increase of image magnification, the processing speed of this algorithm is relatively slow. So based on this situation, this paper presents a parallel implementation of bilinear interpolation algorithm. It provides a solution for fast and efficient enlarging image. Experimental results show that the parallel algorithm can effectively improve the image processing speed and efficiency.
Key words: bilinear interpolation; parallel; improve; speed and efficiency
圖像是人類獲取和交換信息的主要來(lái)源,所以,圖像處理必然貫穿人類生活和工作的方方面面,如航空航天技術(shù)、生物醫(yī)學(xué)工程、軍事公安等領(lǐng)域。另外圖像處理技術(shù)有很多種,圖像放大就是其中應(yīng)用最廣泛的一種,它經(jīng)常被用于航拍圖像放大、醫(yī)學(xué)影像的放大、公安機(jī)關(guān)罪證圖片的放大等。筆者下文中主要探討了圖像放大技術(shù)中的一種,即雙線性插值技術(shù),文章中首先分析了該算法的研究現(xiàn)狀,然后探討該算法的串行和并行實(shí)現(xiàn)方法,最后給出實(shí)驗(yàn)結(jié)果和結(jié)論。
1 雙線性插值算法研究現(xiàn)狀
人們創(chuàng)造了很多圖像放大的算法,如最近鄰插值法、雙線性插值法、雙三次插值法等。和其他算法相比較而言,雙線性插值算法的實(shí)現(xiàn)原理比較簡(jiǎn)單,易于編程實(shí)現(xiàn),并且這種算法處理之后的圖像比較平滑,能夠達(dá)到令人滿意的效果,所以它的實(shí)用性很強(qiáng),成為了一種被人們廣泛使用的算法。
另外隨著圖像放大比例和復(fù)雜程度的增加,或者對(duì)圖像處理速度要求比較高的時(shí)候,雙線性插值算法的處理速度又不盡如人意,所以本文提出了雙線性插值算法的并行實(shí)現(xiàn),有效的提高了該算法的實(shí)現(xiàn)速度和效率。
2 雙線性插值算法及其并行實(shí)現(xiàn)
2.1 雙線性插值算法的實(shí)現(xiàn)原理
雙線性插值算法的核心思想是利用與待插值像素點(diǎn)臨近的四個(gè)像素點(diǎn)的像素值進(jìn)行加權(quán)平均,最終求得待插值像素點(diǎn)的像素值,其實(shí)現(xiàn)原理圖如下:
我們假設(shè)圖像信息存儲(chǔ)在一個(gè)nW*nH的二維數(shù)組里面,并且用n個(gè)進(jìn)程處理該圖像,那么令其中一個(gè)主進(jìn)程負(fù)責(zé)初始化,發(fā)送處理前數(shù)據(jù)以及接收處理后數(shù)據(jù)等操作,剩下的n-1個(gè)從進(jìn)程負(fù)責(zé)對(duì)圖像數(shù)據(jù)進(jìn)行插值并將插值后的數(shù)據(jù)發(fā)送給主進(jìn)程等操作,多個(gè)進(jìn)程就可以同時(shí)對(duì)圖像進(jìn)行處理,這樣顯然能夠提高圖像處理的速度。對(duì)于圖像的邊界處,該文采用重疊一行的方法來(lái)處理,即每個(gè)進(jìn)程都多處理邊界處一行的數(shù)據(jù),這樣就能保證多個(gè)進(jìn)程處理的數(shù)據(jù)能夠完全覆蓋整個(gè)圖像。又因?yàn)榫仃囀前葱写鎯?chǔ)的,所以按行將圖像信息分配給n-1個(gè)進(jìn)程的方法處理起來(lái)比較簡(jiǎn)單,但是這樣并不一定能保證負(fù)載平衡,而且考慮到從進(jìn)程處理數(shù)據(jù)時(shí)主進(jìn)程閑置的情況,本算法規(guī)定分配給每個(gè)從進(jìn)程nH/n行的數(shù)據(jù),分配給主進(jìn)程nH%n行的數(shù)據(jù),這樣在盡可能做到負(fù)載平衡的同時(shí)也提高了處理器的利用率。具體的實(shí)現(xiàn)流程如圖2所示。
3 實(shí)驗(yàn)結(jié)果及數(shù)據(jù)分析
我們假設(shè)輸入圖像的尺寸為cinH *cInW,并且這里cinH *cInW=512*512,輸出圖像的尺寸為coutH*coutW,運(yùn)行時(shí)間為t,加速比為Sn,效率為En,其中n表示進(jìn)程數(shù)。
算法運(yùn)行環(huán)境:實(shí)驗(yàn)室服務(wù)器上;
實(shí)現(xiàn)算法語(yǔ)言:C語(yǔ)言;
1) 該并行算法處理圖像所需時(shí)間明顯小于串行算法處理圖像所需時(shí)間,即該并行算法可以有效降低處理圖像的時(shí)間。
2) 在表1中,第2-4行可以看出:隨著進(jìn)程數(shù)的增加,圖像處理的速度、加速比和效率都越來(lái)越大,說(shuō)明在一定范圍內(nèi),隨著進(jìn)程數(shù)增加,并行計(jì)算可以有效提高圖像處理的速度和效率。但是當(dāng)進(jìn)程數(shù)為17時(shí),圖像處理的速度雖然提高了,但是效率卻降低了,這是因?yàn)殡S著進(jìn)程數(shù)增加,并行開銷所占用的時(shí)間在總時(shí)間中的比例越來(lái)越大,而處理圖像的時(shí)間在總時(shí)間中所占用的比例越來(lái)越小,以致效率降低了。也就是說(shuō),使用17個(gè)進(jìn)程去按1:2的比例放大圖像有些浪費(fèi)CPU資源,所以我們要根據(jù)圖像的放大比例適當(dāng)選擇進(jìn)程數(shù),節(jié)約資源的同時(shí)使并行效率達(dá)到最高。
3) 對(duì)比表1和表2,可以看出:表2中使用2、3、5個(gè)進(jìn)程處理圖像時(shí),明顯比表1中使用相同進(jìn)程數(shù)處理圖像的效率低。而表2中使用17個(gè)進(jìn)程處理圖像時(shí)的加速比和并行效率卻比表1中的高。也就是說(shuō),隨著圖像放大比例的增加,我們需要更多的進(jìn)程去處理圖像,才能使并行效率達(dá)到最高。
4 結(jié)論
根據(jù)上述實(shí)驗(yàn)結(jié)果我們可以得出如下結(jié)論:
1) 本文提出的并行實(shí)現(xiàn)的雙線性插值算法能夠有效提高放大圖像的速度,為高效快速的處理圖像提供了解決方案。
2) 在處理圖像的過(guò)程中,要根據(jù)圖像放大的比例選擇合適的進(jìn)程數(shù),當(dāng)放大比例較小時(shí),使用較少的進(jìn)程去處理圖像,就能有效提高圖像處理的速度和效率。
3) 隨著圖像放大比例的增加,處理圖像的進(jìn)程數(shù)也隨之增加,才能使該算法的加速比和并行效率達(dá)到最高。
參考文獻(xiàn):
[1] 都志輝. 高性能計(jì)算并行編程技術(shù)[M].北京:清華大學(xué)出版社,2001:15-37,81-88.
[2] 張林波,遲學(xué)斌. 并行計(jì)算導(dǎo)論[M].北京:清華大學(xué)出版社,2006:60-181,421-462.
[3] 嚴(yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2009:1-17,90-115.
[4] 譚浩強(qiáng). C語(yǔ)言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2006:158-300.
[5] (加拿大)帕科爾,景麗. 圖像處理與計(jì)算機(jī)視覺算法及應(yīng)用[M].2版.北京:清華大學(xué)出版社,2012.
[6] 求是科技. Visual C++數(shù)字圖像處理典型算法及實(shí)現(xiàn)[M].北京:人民郵電出版社,2006.