圖像增強-圖像銳化

圖像銳化主要影響圖像中的低頻分量,不影響圖像中的高頻分量。

圖像銳化的主要目的有兩個:

1.增強圖像邊緣,使模糊的圖像變得更加清晰,顏色變得鮮明突出,圖像的質量有所改善,產生更適合人眼觀察和識別的圖像;

2.希望通過銳化處理后,目標物體的邊緣鮮明,以便于提取目標的邊緣、對圖像進行分割、目標區域識別、區域形狀提取等,進一步的圖像理解與分析奠定基礎。

圖像銳化一般有兩種方法:

1.微分法

2.高通濾波法

這里主要介紹一下兩種常用的微分銳化方法:梯度銳化和拉普拉斯銳化。

注意:由于銳化使噪聲受到比信號還要強的增強,所以要求銳化處理的圖像有較高的信噪比;否則,銳化后的圖像的信噪比更低。

?

1.梯度銳化

基本理論

鄰域平均法或加權平均法可以平滑圖像,反過來利用對應的微分算法可以銳化圖像。微分算法是求信號的變化率,有加強高頻分量胡作用,從而使圖像輪廓清晰。

由于圖像模糊胡實質是圖像受到平均或積分運算造成的,所以為了把圖像中任何方向伸展的邊緣肯模糊的輪廓變得清晰,可以對圖像進行逆運算如微分運算,從而使圖像清晰化。

在圖像處理中,一階微分是通過梯度算法來實現的,對于一幅圖像用函數f(x,y)表示,定義在f(x,y)在點(x,y)處的梯度是一個矢量,定義為:

捕獲

梯度的方向在函數f(x,y)最大變化率的方向上,梯度的幅度G[f(x,y)]可以由以下公式算出:

捕獲

由上式可知:梯度的數值就是f(x,y)在其最大變化率方向上的單位距離所增加的量。

對于數字圖像而言,微分可用差分來近似。因此上式可以寫成:

捕獲

為了便于編程和提高運算速度,在計算精度允許的情況下,可采用絕對差算法近似為:

捕獲

這種算法又稱為水平垂直差分法,另一種梯度算法是交叉的進行查分計算,稱為羅伯特梯度法,表示為:

捕獲

同樣可采用絕對差算法近似:

捕獲

運用上述兩種梯度近似算法,在圖像的最后一行后最后一列無法計算像素的梯度時,一般用前一行或前一列的梯度值近似代替。

為了不破壞圖像背景的前提下更好地增強邊緣,也可以對上述直接用梯度值代替灰度值的方法進行改進,可以引入一個閾值來判斷是否對某一像素點進行銳化。具體公式如下:

捕獲

對于圖像而言,物體與物體之間,背景與背景之間的梯度變化很小,灰度變化較大的地方一般集中在圖像的邊緣上,也就是物體和背景交接的地方。當我們設定一個閾值時,G[f(i,j)]大于閾值就認為該像素點處于圖像的邊緣,對結果加上常數C,以使邊緣變亮;而對于G[f(i,j)]不大于閾值就認為該像素點為同類像素,即同為物體或同為背景,常數C的選取可以根據具體的圖像特點。這樣既增亮了圖像的邊界,同時又保留了圖像背景原來的狀態,比傳統的梯度銳化具有更好的增強效果和適用性。

另外拉普拉斯算子也可用于圖像銳化,這里不再贅述。

算法實現:

******************************************************************************************************************************************

紅:數字圖像處理視頻教程(兩部)

{中科院版36講視頻教程 + 電子科大版70講視頻教程(岡薩雷斯 第二版)}
? ? 橙:halcon軟件、halcon軟件手把手教破解視頻教程
? ? 黃:數字圖像模式識別demo(C++編寫,在公司也是用C++哦)
? ? 綠:halcon軟件視頻教程、halcon軟件在vs2010中配置
? ? 青:面向對象C++視頻教程
? ? 藍:MFC C++視頻教程
? ? 紫:海量相關文檔資料
? ? http://item.taobao.com/item.htm?spm=a1z10.3.w4002-9510581636.11.VUYzOY&id=43025290175

******************************************************************************************************************************************


/*************************************************************************
* 函數名稱:
* ? GradSharp()
* 參數:
* ? BYTE ?bThre ? ? ? ?- 閾值
* 返回值:
* ? BOOL ? ? ? ? ? ?- 成功返回TRUE,否則返回FALSE。
* 說明:
* ? 該函數用來對圖像進行梯度銳化,設定梯度銳化的閾值為30
/************************************************************************/
void CImgEnhance::GradSharp(unsigned char Thre)
{
? ? ? ?unsigned char* ? ?pSrc; ? ? ? // 指向源圖像的指針
? ? unsigned char* ? ?pDst; ? ??
? ? unsigned char* ? ?pSrc1;
? ? unsigned char* ? ?pSrc2; ? ?
? ? LONG ? ?i,j; ? ? ? ? ? ? ? ?// 循環變量
? ? int ? ?bTemp;
? ? if(m_pImgDataOut != NULL)
? ? {
? ? ? ? delete []m_pImgDataOut;
? ? ? ? m_pImgDataOut = NULL;
? ? }
? ??
? ? if(m_nBitCount != 8)
? ? {
? ? ? ? AfxMessageBox("只能處理8位灰度圖像!");
? ? ? ? return ;
? ? }
? ? ? ?int lineByte = (m_imgWidth * m_nBitCount / 8 + 3) / 4 * 4;


? ? //創建要復制的圖像區域
? ? m_nBitCountOut = m_nBitCount;
? ? int lineByteOut = lineByte;
? ? if (!m_pImgDataOut)
? ? {
? ? ? ? m_pImgDataOut = new unsigned char[lineByteOut * m_imgHeight];
? ? }
? ??
? ? int pixelByte = m_nBitCountOut / 8; // 此處實際就是1,因為只處理8位圖像
? ? for(i = 0; i < m_imgHeight; i++)
? ? {
? ? ? ? for(j = 0; j < m_imgWidth * pixelByte; j++)
? ? ? ? ? ? *(m_pImgDataOut + i * lineByteOut + j) = *(m_pImgData + i * lineByteOut + j);
? ? }
? ??
? ? for(i = 0; i < m_imgHeight; i++) ? ? ? ?// 每行
? ? { ? ? ? ?
? ? ? ? for(j = 0; j < m_imgWidth; j++) ? ? ? ?// 每列
? ? ? ? {
? ? ? ? ? ? ? ? //指向新DIB第i行第j列的像素的指針
? ? ? ? ? ? pDst = m_pImgDataOut + lineByte * i + j;
? ? ? ? ? ??
? ? ? ? ? ? // 進行梯度運算
? ? ? ? ? ? // 指向DIB第i行,第j個象素的指針
? ? ? ? ? ? pSrc ?= (unsigned char*)m_pImgData + lineByte * i + j; ? ? ? ? ? ?
? ? ? ? ? ? // 指向DIB第i+1行,第j個象素的指針
? ? ? ? ? ? pSrc1 = (unsigned char*)m_pImgData + lineByte * (i+1) + j; ? ? ? ? ? ?
? ? ? ? ? ? // 指向DIB第i行,第j+1個象素的指針
? ? ? ? ? ? pSrc2 = (unsigned char*)m_pImgData + lineByte * i + j + 1;?
? ? ? ? ? ? bTemp = abs((*pSrc)-(*pSrc1)) + abs((*pSrc)-(*pSrc2));
? ? ? ? ? ??
? ? ? ? ? ? // 判斷是否小于閾值
? ? ? ? ? ? if ((bTemp+120) < 255)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? // 判斷是否大于閾值,對于小于情況,灰度值不變。
? ? ? ? ? ? ? ? if (bTemp >= Thre)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? *pSrc = bTemp + 120;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? *pSrc = 255;
? ? ? ? ? ? }
? ? ? ? ? ? //生成新的DIB像素值
? ? ? ? ? ? *pDst = *pSrc;
? ? ? ? }
? ? }
? ??
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458820.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458820.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458820.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[譯]git revert

git revert git revert用來撤銷一個已經提交了的快照. 但不是從項目歷史中移除這個commit, 而是生成一個新的commit, 老的commit還是保留在歷史項目里面的. 這樣做的好處是防止了項目丟失歷史. 用法 git revert <commit>生成一個新的commit, 撤銷老的<commit>的所有…

圖像二值化算法總結

****************************************************************************************************************************************** 紅&#xff1a;數字圖像處理視頻教程&#xff08;兩部&#xff09; {中科院版36講視頻教程 電子科大版70講視頻教程&#xff…

html 替換反斜杠,在URL直接替換反斜杠反斜杠

我們有一個系統&#xff0c;基于Moodle的平臺&#xff0c;在這里的文件是這樣引用&#xff1a;在URL直接替換反斜杠反斜杠的http&#xff1a;// [服務器] /file.php/3/LR4/info/ index.html的現在&#xff0c;這個偉大的工程&#xff0c;但是我們的一些老師錯誤地使用落后的斜杠…

VMware橋接模式無法連網

2019獨角獸企業重金招聘Python工程師標準>>> #VMware橋接模式無法連網 在VMware上裝了個CentOS7&#xff0c;使用橋接模式連網&#xff0c;開始使用的時候沒有問題&#xff0c;可以正常上網。最近打開的時候發現上不了網了&#xff0c; 使用ifconfig查看也沒有分配到…

Java 7 中 NIO.2 的使用——第四節 文件和目錄

Files類提供了很多方法用于檢查在于你真正實際去操作一個文件或目錄。這些方法強烈推薦&#xff0c;也非常有用&#xff0c;也能避免很多異常的發生。例如&#xff0c;一個很好的習慣就是在你試著移動一個文件從一個地方到另一個地方的時候&#xff0c;先檢查文件是否存在。 檢…

計算機二級access知識點6,2019年計算機二級ACCESS考試知識點:關系數據模型

【導語】2019年計算機二級考試備考正在進行中&#xff0c;為了方便考生及時有效的備考&#xff0c;那么&#xff0c;無憂考網為您精心整理了2019年計算機二級ACCESS考試知識點&#xff1a;關系數據模型&#xff0c;歡迎大家的關注。如想獲取更多計算機二級考試的備考資料&#…

乘方取模計算(模冪計算)

乘方取模計算也稱為模冪計算&#xff0c;在密碼系統中經常使用&#xff0c;是不可缺少的。 使用本程序可以解HDU2035&#xff0c;只需要考慮輸入和輸出。 /** 乘方取模** 已知給定的正整數a、n和m&#xff0c;計算x的值&#xff0c;a^n x (mod m)。** 二分法用在這里也很有效果…

Moldflow中文版注塑流動分析案例導航視頻教程

http://item.taobao.com/item.htm?spma1z10.5.w4002-9510581626.18.30lDTO&id43054534418 QQ&#xff1a;2911984429 http://aidem.lingw.net/

Jaxb annotation使用

JAXB&#xff08;Java Architecture for XML Binding) 是一個業界的標準&#xff0c;是一項可以根據XML Schema產生Java類的技術。該過程中&#xff0c;JAXB也提供了將XML實例文檔反向生成Java對象樹的方法&#xff0c;并能將Java對象樹的內容重新寫到XML實例文檔。從另一方面來…

湖北大學計算機袁云,暑期走訪不停歇 遠赴異地送關懷——學校慰問離退休教職工和校友...

不畏酷暑送清風&#xff0c;心常為老懷關愛。7月至8月&#xff0c;正值高溫時節&#xff0c;校領導和各單位負責人根據學校黨委的安排&#xff0c;赴深圳、廣州、北京、上海等地走訪慰問70歲以上離退休教職工和部分校友&#xff0c;把學校的問候和祝福送到他們身邊。“對老同志…

MATLAB各類函數詳細講解 simulike系統仿真分析

http://item.taobao.com/item.htm?spma230r.1.14.40.yWjJFw&id43113292964&ns1&abbucket2&_uk10ekfuf6120#detail Matlab基本操作函數 SIMULINK仿真函數 插值與擬合函數視頻教程 符號運算函數視頻教程 概率統計函數視頻教程 級數與微積分函數視頻教程 矩陣運…

Github Coding Developer Book For LiuGuiLinAndroid

Github Coding Developer Book For LiuGuiLinAndroid 收集了這么多開源的PDF&#xff0c;也許會幫到一些人&#xff0c;現在里面的書籍還不是很多&#xff0c;我也在一點點的上傳&#xff0c;才上傳不到一半&#xff0c;沒辦法&#xff0c;庫存太多了 覺得全部pull麻煩的話&…

#個人博客作業week2——結對編程伙伴代碼復審

General 1.程序能夠順利地運行。程序通過命令行輸入&#xff0c;能夠向對應的文件中輸出符合要求的題目和答案。程序能夠根據用戶的不同選擇&#xff0c;進行題目的生產或答案的校驗&#xff0c;生成出的題目符合參數要求和項目的查重等各種要求&#xff0c;答案校驗準確迅速。…

Linux設備驅動程序(第三版)/深入理解計算機系統(原書第2版)/[Android系統原理及開發要點詳解].(韓超,梁泉)百度云盤下載

文檔下載云盤連接&#xff1a;http://pan.baidu.com/s/1dDD2sgT 更多其他資料&#xff0c;請關注淘寶&#xff1a;http://shop115376623.taobao.com/ http://item.taobao.com/item.htm?spma230r.1.14.3.ArS64K&id43025290175&ns1&abbucket2&_uk10ekfuf6187#d…

個人用戶上網需要有計算機電話線,個人用戶上網需要有計算機、電話線、用戶賬號和口令,以及______。...

_條形碼按照使用目的可分為()、()和()。簡述市場定位的步驟。植物、真菌、藻類和原核細胞的細胞外基質是用糞便隱血試驗鑒別消化道良性與惡性腫瘤所致的出血&#xff0c;有價值的是從長期來看,在紙幣制度下或紙幣本位下,( )是決定匯率的基礎。最常引起肺心病的疾病是從長期來看…

Xcode 5.1 編譯模擬器以及真機都能使用的靜態庫

Xcode 5.1.dmg 下載地址 http://pan.baidu.com/s/1jGJpKm6 1.新建 Framework & Library 工程 我起名叫ShowInfo,下面為其源碼 showInfo.h #import <Foundation/Foundation.h> interface ShowInfo : NSObject (void)showInfo; end showInfo.m #import "ShowI…

UVALive 6511 Term Project

Term Project Time Limit: 3000msMemory Limit: 131072KBThis problem will be judged on UVALive. Original ID: 651164-bit integer IO format: %lld Java class name: Main解題&#xff1a;強連通分量 1 #include <bits/stdc.h>2 using namespace std;3 const in…

MATLAB混合編程視頻教程下載 SIMULINK系統仿真視頻

下載鏈接&#xff1a; http://item.taobao.com/item.htm?id43401674106 精通MATLAB混合編程視頻講解 MATLAB各類函數視頻講解 基于MATLAB的高等數學問題求解 MATLAB函數速查視頻講解 面向對象C視頻教程 五朵金花&#xff0c;帶你輕松搞定MATLAB 金花詳情&#xff1a; 精通MA…

css z-index

為什么80%的碼農都做不了架構師&#xff1f;>>> css z-index 最近在發現z-index在position"relative"的元素中會失效 去掉position屬性就正常&#xff1a;z-index1 出現在 z-index999之上 記錄一下供以后查看 轉載于:https://my.oschina.net/livend/blog…

用c++寫的一個詞典工具

使用的QT圖形界面&#xff0c;用libcurl獲取的網頁&#xff0c;在之中遇見了很多問題&#xff0c;一直想用c類封裝一下libcurl,發現c很不到家啊。索性用了友元函數。 先貼上代碼吧 main.cpp #include <stdio.h> #include <stdlib.h> #include <unistd.h>#in…