<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    圖像編程學習筆記9――圖像的銳化

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    銳化(sharpening)和平滑恰恰相反,它是通過增強高頻分量來減少圖象中的模糊,因此又稱為高通濾波(high passfilter)。銳化處理在增強圖象邊緣的同時增加了圖象的噪聲。

    常用的銳化模板是拉普拉斯(Laplacian)模板(見(3.4)式),又是個數學家的名字,可見學好數學,走遍天下都不怕。

     

    RFID設備管理軟件(3.4)

    容易看出拉普拉斯模板的作法:先將自身與周圍的8個象素相減,表示自身與周圍象素的差別;再將這個差別加上自身作為新象素的灰度。可見,如果一片暗區出現了一個亮點,那么銳化處理的結果是這個亮點變得更亮,增加了圖象的噪聲。

    因為圖象中的邊緣就是那些灰度發生跳變的區域,所以銳化模板在邊緣檢測中很有用,這一點將在后面詳細介紹。

    功能實現code:

     

    [cpp] view plaincopy  
    1. /** 
    2. * 函數名: sharpening 
    3. * 功  能: 對圖像進行銳化處理 
    4. */  
    5. void Laplacian()  
    6. {  
    7.     int temp[9] = {-1,-1,-1,-1,9,-1,-1,-1,-1};   //Laplacian 模版  
    8.     int height = bmpInfoHeader.biHeight;     
    9.     int width = bmpInfoHeader.biWidth;    
    10.     int imgSize = bmpInfoHeader.biSizeImage;  
    11.     int lineByte = (width * 8 +31) / 32 * 4;  //每行像素所占字節數  
    12.     //處理是基于原圖的,所以原圖的數據不能改變,用pNewBmpData存儲改變之后的數據  
    13.     memcpy(pNewBmpData,pBmpData,imgSize);   //把原圖數據復制給pNewBmpData  
    14.     //注意邊界點不處理,所以i從1到高度-2,j類似  
    15.     double temResult;  //中間結果  
    16.     for(int i = 1; i < height - 1; i++ )  
    17.     {  
    18.         for(int j = 1; j < width - 1; j++ )  
    19.         {  
    20.             temResult = (double)(*(pBmpData + (i-1) * lineByte + j - 1) * temp[0]);  
    21.             temResult += (double)(*(pBmpData + (i-1) * lineByte + j) * temp[1]);  
    22.             temResult += (double)(*(pBmpData + (i-1) * lineByte + j + 1) * temp[2]);  
    23.             temResult += (double)(*(pBmpData + (i) * lineByte + j - 1) * temp[3]);  
    24.             temResult += (double)(*(pBmpData + (i) * lineByte + j) * temp[4]);  
    25.             temResult += (double)(*(pBmpData + (i) * lineByte + j + 1) * temp[5]);  
    26.             temResult += (double)(*(pBmpData + (i+1) * lineByte + j - 1) * temp[6]);  
    27.             temResult += (double)(*(pBmpData + (i+1) * lineByte + j) * temp[7]);  
    28.             temResult += (double)(*(pBmpData + (i+1) * lineByte + j + 1) * temp[8]);  
    29.             *(pNewBmpData + i * lineByte + j) = temResult;  
    30.         }  
    31.     }  
    32. }  
    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全