于本成 朱作付
徐州工業(yè)職業(yè)技術(shù)學(xué)院 江蘇 221000
隨著機(jī)器視覺在各行業(yè)中應(yīng)用的不斷擴(kuò)大,圖形圖像處理技術(shù)的要求也越來越高,如何提高所得圖像更真實(shí)的效果與提高圖像處理速度,更成為當(dāng)今一大熱題。本文設(shè)計(jì)了一個(gè)算法利用坐標(biāo)反向?qū)?yīng)使圖像翻轉(zhuǎn)產(chǎn)生投影效果,然后優(yōu)化算法利用圖像的漸變透明度使所得圖片更具真實(shí)效果。使得機(jī)器視覺技術(shù)在圖像的真實(shí)性方面有了非常大的提高。
本算法主要利用圖像翻轉(zhuǎn)和位置變換來產(chǎn)生投影效果,算法有實(shí)現(xiàn)簡單運(yùn)算速度快的優(yōu)點(diǎn),但同時(shí)又有了投影效果不理想的缺點(diǎn)。
本算法設(shè)計(jì)原理如下:
(1) 創(chuàng)建一個(gè)源圖對象,一個(gè)目標(biāo)圖對象;
(2) 從機(jī)器視覺系統(tǒng)采集的圖像中選取源圖,并裝載;
(3) 定義圖像的高與寬,并保證目標(biāo)圖與源圖的各項(xiàng)數(shù)據(jù)一致;
(4) 將源圖垂直翻轉(zhuǎn)后放置于源圖正下方,產(chǎn)生投影效果。
算法實(shí)現(xiàn)代碼如下:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *bmpSrc = new Graphics::TBitmap;
Graphics::TBitmap *bmpDst = new Graphics::TBitmap;
try
{
bmpSrc->LoadFromFile("文件所在路徑以及文件名稱");
int nWidth = bmpSrc->W(wǎng)idth;
int nHeight = bmpSrc->Height;
TRect rctSrc(0, 0, nWidth, nHeight);
TRect rctDst(0, nHeight - 1, nWidth, -1);
bmpDst->W(wǎng)idth = nWidth;
bmpDst->Height = nHeight;
bmpDst->Canvas->CopyRect(rctDst, bmpSrc->Canvas, rctSrc);
Canvas->Draw(0, 0, bmpSrc);
Canvas->Draw(0, nHeight, bmpDst);
}
__finally
{
delete bmpSrc;
delete bmpDst;
}
}
本算法是在圖像翻轉(zhuǎn)產(chǎn)生投影效果算法的基礎(chǔ)上分析原算法的優(yōu)缺點(diǎn)進(jìn)行了改進(jìn)與優(yōu)化,主要利用了圖像的漸變透明度產(chǎn)生更為真實(shí)的投影效果,算法中的語句double alpha= 255.0 - 255.0*y/nHeight;可以修改透明漸變速度,比如改成double alpha = 255.0 - 500.0*y/nHeight;if(alpha<0) alpha = 0;,以此大大提高了本算法在機(jī)器視覺系統(tǒng)實(shí)際應(yīng)用中的靈活性。
在BCB6中無法使用AlphaBlend的解決辦法為:
將BCBLIBPSDK中的msimg32.libj加入工程里面。
算法以及注釋如下:simg32.libjiaRU
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 源圖和目標(biāo)圖兩個(gè)對象的創(chuàng)建
Graphics::TBitmap *bmpSrc = new Graphics::TBitmap;
Graphics::TBitmap *bmpDst = new Graphics::TBitmap;
try
{
// 從文件中裝載位圖
bmpSrc->LoadFromFile("文件所在路徑以及文件名稱");
// 定義圖像的寬和高
int nWidth = bmpSrc->W(wǎng)idth;
int nHeight = bmpSrc->Height;
// 源圖的邊框區(qū)域
大學(xué)生正處于確立自我統(tǒng)一性的階段,在該階段內(nèi)心充滿著忐忑不安、矛盾沖突,尤其當(dāng)他們的現(xiàn)實(shí)自我與理想自我無法統(tǒng)一時(shí),會(huì)引發(fā)焦慮,不斷產(chǎn)生負(fù)性情緒。手機(jī)獨(dú)有的特點(diǎn)如便于攜帶、虛擬化、智能化等正好使大學(xué)生的心理需要得到滿足,成為他們消除負(fù)性情緒的最好工具。尤其是具有特質(zhì)焦慮的大學(xué)生,為了脫離負(fù)性情緒所帶來的困擾,便趨于通過使用手機(jī)來轉(zhuǎn)移注意力,從而過分依賴手機(jī)。國外研究者表明,緩解不安、憂愁、悲傷等負(fù)性情緒是手機(jī)成癮行為的主要目的[18]。
TRect rctSrc(0, 0, nWidth, nHeight);
// 目標(biāo)圖的邊框區(qū)域
TRect rctDst(0, nHeight - 1, nWidth, -1);
// 目標(biāo)圖和源圖的寬一致
bmpDst->W(wǎng)idth = nWidth;
// 目標(biāo)圖和源圖的高一致
bmpDst->Height = nHeight;
// 垂直翻轉(zhuǎn)
bmpDst->PixelFormat = pf32bit;
// 漸變透明度
for(int y=0; y<nHeight; y++)
{
RGBQUAD* cr =(RGBQUAD*)bmpDst->ScanLine[y];
double alpha = 255.0 - 255.0*y/nHeight;
for(int x=0; x<nWidth; x++)
{
cr[x].rgbReserved = alpha+0.5;
cr[x].rgbBlue *= alpha/255.0;
cr[x].rgbRed *= alpha/255.0;
cr[x].rgbGreen *= alpha/255.0;
}
}
// 將源圖繪制在窗體左上方
Canvas->Draw(0, 0, bmpSrc);
// 將目標(biāo)圖繪制在源圖下方產(chǎn)生投影效果
BLENDFUNCTION blendfunc={
AC_SRC_OVER,
0,
255,
AC_SRC_ALPHA
};
::AlphaBlend(Canvas->Handle,0, nHeight, nWidth,nHeight, bmpDst->Canvas->Handle,0,0,nWidth,nHeight, blendfunc
);
}
__finally
{
// 清除
delete bmpSrc;
delete bmpDst;
}
}
本文用一個(gè)圖片為例,展示了上述算法處理后的結(jié)果,圖片可以任意調(diào)換,至于讓使用機(jī)器視覺系統(tǒng)的工作人員來選擇圖片只需在上述算法中加入簡單的兩條語句,該語句不為本算法重點(diǎn),故不予表現(xiàn)。圖片的透明漸變圖可以調(diào)整,使圖像更為清晰。下面圖像只為實(shí)例(如圖1,圖2),不為具體應(yīng)用。
圖1 圖像投影算法處理過的圖片
圖2 優(yōu)化后算法處理后的圖片
本文算法實(shí)現(xiàn)了機(jī)器視覺中圖像的投影,在提高程序運(yùn)行速度的基礎(chǔ)上更提高了所得結(jié)果圖像的真實(shí)性,對于機(jī)器視覺技術(shù)又是一項(xiàng)新的突破。本文算法應(yīng)用到機(jī)器視覺系統(tǒng)的圖像采集處理模塊中,對于提高機(jī)器視覺技術(shù)應(yīng)用的普及率與專門領(lǐng)域的算法優(yōu)化有了非常大的幫助,并能在其他識(shí)別系統(tǒng)中對于圖像的真實(shí)性檢測模塊中得以應(yīng)用。
[1]魏偉波.基于圖像的目標(biāo)自動(dòng)識(shí)別與跟蹤技術(shù)研究[D].南京理工大學(xué).2006.
[2]邵平,楊路明.旋轉(zhuǎn) 45°矩形窗口的積分圖像算法改進(jìn)及應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件.2008.
[3]吳成東,樊玉泉,張?jiān)浦?劉濛.基于差分投影與優(yōu)割字符的車牌字符分割[J].東北大學(xué)學(xué)報(bào)(自然科學(xué)版).2008.
[4]劉云鵬,李廣偉,史澤林.基于黎曼流形的圖像投影配準(zhǔn)算法[J].自動(dòng)化學(xué)報(bào).2009.
[5]潘吉彥,胡波,張建秋.基于自適應(yīng)初始搜索點(diǎn)預(yù)測的目標(biāo)跟蹤算法[J].系統(tǒng)工程與電子技術(shù).2008.
[6]劉曉妮,盧奕南,楊華民.范靜濤基于OpenCV的曲面全景投影算法研究[J].計(jì)算機(jī)仿真.2011.