于本成 朱作付
徐州工業職業技術學院 江蘇 221000
隨著機器視覺在各行業中應用的不斷擴大,圖形圖像處理技術的要求也越來越高,如何提高所得圖像更真實的效果與提高圖像處理速度,更成為當今一大熱題。本文設計了一個算法利用坐標反向對應使圖像翻轉產生投影效果,然后優化算法利用圖像的漸變透明度使所得圖片更具真實效果。使得機器視覺技術在圖像的真實性方面有了非常大的提高。
本算法主要利用圖像翻轉和位置變換來產生投影效果,算法有實現簡單運算速度快的優點,但同時又有了投影效果不理想的缺點。
本算法設計原理如下:
(1) 創建一個源圖對象,一個目標圖對象;
(2) 從機器視覺系統采集的圖像中選取源圖,并裝載;
(3) 定義圖像的高與寬,并保證目標圖與源圖的各項數據一致;
(4) 將源圖垂直翻轉后放置于源圖正下方,產生投影效果。
算法實現代碼如下:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *bmpSrc = new Graphics::TBitmap;
Graphics::TBitmap *bmpDst = new Graphics::TBitmap;
try
{
bmpSrc->LoadFromFile("文件所在路徑以及文件名稱");
int nWidth = bmpSrc->Width;
int nHeight = bmpSrc->Height;
TRect rctSrc(0, 0, nWidth, nHeight);
TRect rctDst(0, nHeight - 1, nWidth, -1);
bmpDst->Width = 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;
}
}
本算法是在圖像翻轉產生投影效果算法的基礎上分析原算法的優缺點進行了改進與優化,主要利用了圖像的漸變透明度產生更為真實的投影效果,算法中的語句double alpha= 255.0 - 255.0*y/nHeight;可以修改透明漸變速度,比如改成double alpha = 255.0 - 500.0*y/nHeight;if(alpha<0) alpha = 0;,以此大大提高了本算法在機器視覺系統實際應用中的靈活性。
在BCB6中無法使用AlphaBlend的解決辦法為:
將BCBLIBPSDK中的msimg32.libj加入工程里面。
算法以及注釋如下:simg32.libjiaRU
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 源圖和目標圖兩個對象的創建
Graphics::TBitmap *bmpSrc = new Graphics::TBitmap;
Graphics::TBitmap *bmpDst = new Graphics::TBitmap;
try
{
// 從文件中裝載位圖
bmpSrc->LoadFromFile("文件所在路徑以及文件名稱");
// 定義圖像的寬和高
int nWidth = bmpSrc->Width;
int nHeight = bmpSrc->Height;
// 源圖的邊框區域
大學生正處于確立自我統一性的階段,在該階段內心充滿著忐忑不安、矛盾沖突,尤其當他們的現實自我與理想自我無法統一時,會引發焦慮,不斷產生負性情緒。手機獨有的特點如便于攜帶、虛擬化、智能化等正好使大學生的心理需要得到滿足,成為他們消除負性情緒的最好工具。尤其是具有特質焦慮的大學生,為了脫離負性情緒所帶來的困擾,便趨于通過使用手機來轉移注意力,從而過分依賴手機。國外研究者表明,緩解不安、憂愁、悲傷等負性情緒是手機成癮行為的主要目的[18]。
TRect rctSrc(0, 0, nWidth, nHeight);
// 目標圖的邊框區域
TRect rctDst(0, nHeight - 1, nWidth, -1);
// 目標圖和源圖的寬一致
bmpDst->Width = nWidth;
// 目標圖和源圖的高一致
bmpDst->Height = nHeight;
// 垂直翻轉
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);
// 將目標圖繪制在源圖下方產生投影效果
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;
}
}
本文用一個圖片為例,展示了上述算法處理后的結果,圖片可以任意調換,至于讓使用機器視覺系統的工作人員來選擇圖片只需在上述算法中加入簡單的兩條語句,該語句不為本算法重點,故不予表現。圖片的透明漸變圖可以調整,使圖像更為清晰。下面圖像只為實例(如圖1,圖2),不為具體應用。

圖1 圖像投影算法處理過的圖片

圖2 優化后算法處理后的圖片
本文算法實現了機器視覺中圖像的投影,在提高程序運行速度的基礎上更提高了所得結果圖像的真實性,對于機器視覺技術又是一項新的突破。本文算法應用到機器視覺系統的圖像采集處理模塊中,對于提高機器視覺技術應用的普及率與專門領域的算法優化有了非常大的幫助,并能在其他識別系統中對于圖像的真實性檢測模塊中得以應用。
[1]魏偉波.基于圖像的目標自動識別與跟蹤技術研究[D].南京理工大學.2006.
[2]邵平,楊路明.旋轉 45°矩形窗口的積分圖像算法改進及應用[J].計算機應用與軟件.2008.
[3]吳成東,樊玉泉,張云洲,劉濛.基于差分投影與優割字符的車牌字符分割[J].東北大學學報(自然科學版).2008.
[4]劉云鵬,李廣偉,史澤林.基于黎曼流形的圖像投影配準算法[J].自動化學報.2009.
[5]潘吉彥,胡波,張建秋.基于自適應初始搜索點預測的目標跟蹤算法[J].系統工程與電子技術.2008.
[6]劉曉妮,盧奕南,楊華民.范靜濤基于OpenCV的曲面全景投影算法研究[J].計算機仿真.2011.