基於MATLAB的影象平滑演算法實現及應用

2022-10-10 21:48:07 字數 4925 閱讀 1518

1.3 影象雜訊

一幅影象在獲取和傳輸等過程中,會受到各種各樣雜訊的干擾,其主要**有三:一為在光電、電磁轉換過程中引入的人為雜訊;二為大氣層電(磁)暴、閃電、電壓、浪湧等引起的強脈衝性衝激雜訊的干擾;三為自然起伏性雜訊,由物理量的不連續性或粒子性所引起,這類雜訊又可分成熱雜訊、散粒雜訊等。一般在影象處理技術中常見的雜訊有:

加性雜訊、乘性雜訊、量化雜訊、「鹽和胡椒」雜訊等。下面介紹兩種主要的雜訊。

1、高斯雜訊

這種雜訊主要**於電子電路雜訊和低照明度或高溫帶來的感測器雜訊,也稱為正態雜訊,是在實踐中經常用到的雜訊模型。高斯隨機變數z 的概率密度函式(pdf)由下式給出:

其中, z 表示影象像元的灰度值;μ表示z 的期望;σ表示z 的標準差。

2、椒鹽雜訊

主要**於成像過程中的短暫停留和資料傳輸中產生的錯誤。其pdf 為:

如果b > a, 灰度值b 在影象中顯示為一亮點,a 值顯示為一暗點。如果pa 和影象均不為零,在影象上的表現類似於隨機分布影象上的胡椒和鹽粉微粒,因此稱為椒鹽雜訊。當pa 為零時,表現為「鹽」雜訊;當pb 為零時,表現為「胡椒」雜訊。

影象中的雜訊往往是和訊號交織在一起的尤其是乘性雜訊,如果平滑不當,就會使影象本身的細節如邊緣輪廓『線條等模糊不清,從而使影象質量降低。

第2章、影象平滑方法

2.1 空域低通濾波

將空間域模板用於影象處理,通常稱為空間濾波,而空間域模板稱為空間濾波器。空間域濾波按線性和非線性特點有:線性、非線性平滑波器。

線性平滑濾波器包括領域平均法(均值濾波器),非線性平滑濾波器有中值濾波器。

2.1.1 均值濾波器

對一些影象進行線性濾波可以去除影象中某些型別的雜訊,如採用鄰域平均法的均值濾波器就非常適用於去除通過掃瞄得到的影象中的顆粒雜訊。鄰域平均法是空間域平滑技術。這種方法的基本思想是,在影象空間,假定有一副n×n個畫素的原始影象f(x,y),用領域內幾個畫素的平均值去代替影象中的每乙個畫素點值的操作。

經過平滑處理後得到一副影象 g(x,y), 其表示式如下:

式中: x,y=0,1,2,…,n-1;s為(x,y)點領域中點的座標的集合,但不包括(x,y)點;m為集合內座標點的總數。

領域平均法有力地抑制了雜訊,但隨著領域的增大,影象的模糊程度也愈加嚴重。為了盡可能地減少模糊失真,也可採用閾值法減少由於領域平均而產生的模糊效應。其公式如下:

式中:t為規定的非負閾值。

上述方法也可稱為算術均值濾波器,除此之外還可以採用幾何均值濾波器、諧波均值濾波器和逆諧波均值濾波器。幾何均值濾波器所達到的平滑度可以與算術均值濾波器相比,但在濾波過程中會丟失更少的影象細節。諧波均值濾波器對「鹽」雜訊效果更好,但是不適用於「胡椒」雜訊。

它善於處理像高斯雜訊那樣的其他雜訊。逆諧波均值濾波器更適合於處理脈衝雜訊,但它有個缺點,就是必須要知道雜訊是暗雜訊還是亮雜訊,以便於選擇合適的濾波器階數符號,如果階數的符號選擇錯了可能會引起災難性的後果。

2.1.2 中值濾波器

中值濾波是一種常用的去除雜訊的非線性平滑濾波處理方法,其基本思想用影象畫素點的領域灰度值的中值來代替該畫素點的灰度值。二維中值濾波可以用下式表示:

式中:a為濾波視窗; 為二維資料序列。其主要功能是讓周圍象素灰度值的差比較大的畫素改取與周圍的畫素值接近的值,從而可以消除孤立的雜訊點,所以中值濾波對於濾除影象的椒鹽雜訊非常有效。

中值濾波器可以做到既去除雜訊又能保護影象的邊緣,從而獲得較滿意的復原效果,而且,在實際運算過程中不需要影象的統計特性,這也帶來不少方便,但對一些細節多,特別是點、線、尖頂細節較多的影象不宜採用中值濾波的方法。如果希望強調中間點或距中間點最近的幾個點的作用,則可採用加權中值濾波。其基本原理是改變視窗中變數的個數,可以使乙個以上的變數等於同一點的值,然後對擴張後的數字集求中值。

這種方法比簡單中值濾波效能更好地從受雜訊汙染的影象中恢復出階躍邊緣以及其他細節。另有一種可以處理具有更大概率的衝激雜訊的是自適應中值濾波器,在進行濾波處理時,能依賴一定條件而改變領域的大小。其優點是在平滑非衝激雜訊時可以儲存細節,所以既能除去「椒鹽」雜訊,平滑其他非衝激雜訊,還能減少諸如物體邊界細化或粗化等失真。

2.2 頻域低通濾波

在分析影象訊號的頻率特性時,對於一副影象,直流分量表示了影象的平均灰度,大面積的背景區域和緩變部分是低頻分量,其邊緣、細節、跳躍部分以及顆粒雜訊都代表影象的高頻分量。頻域低通濾波就是除去其高頻分量就能去掉雜訊,從而使影象得到平滑。利用卷積定理,可以寫成以下形式:

g(u,v)=h(u,v)f(u,v)

式中,f(u,v)是含噪影象的傅利葉變換,g(u,v)是平滑後影象的傅利葉變換,h (u,v)是傳遞函式。利用h(u,v)使f(u,v)的高頻分量得到衰減,得到g(u,v)後再經過反變換就得到所希望的影象g(u,v)了。低通濾波平滑影象的系統框圖如下所示:

圖3-1 影象頻域低通濾波流程框圖

低通濾波法又分為以下幾種:

(1) 理想低通濾波器(ilpf)

乙個理想的低通濾波器的傳遞函式由下式表示:

式中d0是乙個規定的非負的量,它叫做理想低通濾波

器的截止頻率。d(u,v)代表從頻率平面的原點到(u ,v)點的距離,即:

理想低通濾波器在處理過程中會產生較嚴重的模糊和振鈴現象。

(2) 巴特沃思低通濾波器(blpf)

n 階巴待沃思濾波器的傳遞係數為

dlpf與ilpf不同,它的通帶與阻帶之間沒有明顯的不連續性,因此它沒有「振鈴」現象發生,模糊程度減少,但從它的傳遞函式特性曲線h(u,v)可以看出,在它的尾部保留有較多的高頻,所以對雜訊的平滑效果還不如ilpf(理想低通濾波器)。

(3) 指數濾波器(elpf)

其傳遞函式表示為:

由於elpf 具有比較平滑的過渡形,為此平滑後的影象沒有「振鈴」現象,而elpf 與blpf 相比.它具有更快的衰減特性,所以經elpf 濾波的影象比blpf 處理的影象稍微模糊一些。

(4) 梯形濾波器(tlpf)

梯形濾波器的傳遞函式介於理想低通濾波器和具有平

滑過渡帶的低通濾波器之間,它的傳遞函式為:

式中:d0為梯形低通濾波器截止頻率,d0、d1須滿足d0第三章、影象平滑處理與除錯

本課程設計中程式執行的環境是windows平台,並選用matlab作為程式設計開發工具,matlab是一種向量語言,它非常適合於進行影象處理。

3.1 模擬雜訊影象

影象增強操作主要是針對影象的各種雜訊而言的,為了說明影象處理中的濾波方法和用途,需要模擬數字影象的各種雜訊來分析濾波效果。

matlab影象處理工具箱提供的雜訊新增函式imnoise,它可以對影象新增一些典型的雜訊。其語法:

j=imnoise(i,type)

j=imnoise(i,type,parameters)

其功能是:返回對原影象i新增典型雜訊的影象j,引數type和parameters用於確定雜訊的型別和相應的引數。

三種典型的雜訊:

type=』gaussian』時,為高斯雜訊;

type=』salt&pepper』時為椒鹽雜訊;

type=』speckle』時為乘法雜訊;

影象資料讀取函式imread從影象檔案中讀取影象資料。其基本呼叫格式如下:

i=imread(檔名,』影象檔案格式』)

其功能是:將檔名指定的影象檔案讀入i中。

i=imshow(a)

其功能是顯示影象a。

如下程式就實現了3種雜訊汙染了的影象:

i=imread(''); %讀取影象

i1=imnoise(i,'gaussian'); %加高斯雜訊

i2=imnoise(i,'salt & pepper',0.02); %加椒鹽雜訊

i3=imnoise(i,'speckle'); %加乘性雜訊

subplot(221),imshow(i); %顯示影象i

subplot(222),imshow(i1);

subplot(223),imshow(i2);

subplot(224),imshow(i3);

執行結果如下:

圖3-1雜訊汙染的影象

3.2均值濾波法

在matlab影象處理工具箱中,提供了imfilter函式用於實現均值濾波,imfilter的語法格式為:

b=imfilter(a,h)

其功能是,用h模板對影象a進行均值濾波,

取平均值濾波模版為

h1=1/9[1 1 1;1 1 1;1 1 1];

h2=1/25[1 1 1 1 1;1 1 1 1 1;1 1 1 1 1;1 1 1 1 1;1 1 1 1 1];

分別以這兩個平均值濾波運算元對圖3-1中的四幅影象進行濾波操作。

取h1,程式如下:

i=imread('');

i1=imnoise(i,'gaussian');

i2=imnoise(i,'salt & pepper',0.02);

i3=imnoise(i,'speckle');

h1=ones(3,3)/9; %3×3領域模板

j=imfilter(i,h1); %領域平均

j1=imfilter(i1,h1);

j2=imfilter(i2,h1);

j3=imfilter(i3,h1);

subplot(221),imshow(j);

subplot(222),imshow(j1);

subplot(223),imshow(j2);

subplot(224),imshow(j3);

執行結果如圖3-2

取h2,程式如下:

i=imread('');

i1=imnoise(i,'gaussian');

i2=imnoise(i,'salt & pepper',0.02);

i3=imnoise(i,'speckle');

h2=ones(5,5)/25;

j=imfilter(i,h2);

j1=imfilter(i1,h2);

j2=imfilter(i2,h2);

j3=imfilter(i3,h2);

subplot(221),imshow(j);

基於MATLAB的影象處理演算法綜合應用演算法開發

一 實驗型別 研究 二 實驗目的 1 培養應用matlab開發影象處理演算法的能力。2 掌握開發綜合性影象演算法的技能與方法。三 實驗內容 彈孔中心位置的影象處理方法。四 實驗要求 開發出演算法及程式 並獲得處理結果。其基本原理是,先對影象進行邊緣檢測,後應用數學形態學的方法將邊緣連線在一起,後填充...

基於半色調技術的影象影藏演算法

本文是對image hiding algorithms based on halftoning technique 的乙個實現 1 摘要 halftoning演算法經常被用來將連續色調的影象轉換成純黑白影象。本文的主要貢獻是應用前人提出乙個halftoning隱藏方法,將小的二值影象影藏到乙個大二值...

用MATLAB實現基於混沌的影象置亂加密演算法

由於影象檔案的加密有其自身的要求,傳統的文字加密方法不適合影象檔案加密。為此,我們在混沌對映加密演算法的基礎上,提出了一種利用logistic混沌序列對影象畫素點置亂實現加密的演算法,那麼,我們今天借助matlab軟體平台,看看基於混沌的影象置亂加密演算法如何實現。一 基於混沌的影象置亂加密演算法 ...