當前位置:首頁 » 編程語言 » 平滑濾波c語言

平滑濾波c語言

發布時間: 2022-05-14 15:49:47

❶ 平滑濾波的濾波方法

圖像的雜訊濾波器有很多種,常用的有線性濾波器,非線性濾波器。採用線性濾波如鄰域平滑濾波,對受到雜訊污染而退化的圖像復原,在很多情況下是有效的。但大多數線性濾波器具有低通特性,去除雜訊的同時也使圖像的邊緣變模糊了。而另一種非線性濾波器如中值濾波,在一定程度上可以克服線性濾波器所帶來的圖像模糊問題,在濾除雜訊的同時,較好地保留了圖像的邊緣信息。
鄰域平滑濾波原理
鄰域平均法[2]是一種利用Box模版對圖像進行模版操作(卷積運算)的圖像平滑方法,所謂Box模版是指模版中所有系數都取相同值的模版,常用的3×3和5×5模版如下:
鄰域平均法的數學含義是:
(式4-1)
式中:x,y=0,1,…,N-1;S是以(x,y)為中心的鄰域的集合,M是S內的點數。
鄰域平均法的思想是通過一點和鄰域內像素點求平均來去除突變的像素點,從而濾掉一定雜訊,其優點是演算法簡單,計算速度快,其代價會造成圖像在一定程度上的模糊。

中值濾波原理
中值濾波[2]就是用一個奇數點的移動窗口,將窗口的中心點的值用窗口內的各點中值代替。假設窗口內有五點,其值為80、90、200、110和120,那麼此窗口內各點的中值及為110。
設有一個一維序列f1,f2,…,fn,取窗口長度(點數)為m(m為奇數),對其進行中值濾波,就是從輸入序列中相繼抽出m個數fi-v,…,fi-1,fi,fi+1,…,fi+v(其中fi為窗口中心值,v=(m-1)/2),再將這m個點按其數值大小順序排序,取其序號的中心點的那個數作為濾波輸出。數學公式表示為:
Yi=Med{fi-v,…,fi-1,fi,fi+1,…,fi+v} i∈N v=(m-1)/2 (式4-2)
Yi稱為序列fi-v,…,fi-1,fi,fi+1,…,fi+v的中值
例如,有一序列{0,3,4,0,7},重新排序後為{0,0,3,4,7}則Med{0,0,3,4,7}=3。此列若用平滑濾波,窗口也取5,那麼平滑濾波輸出為(0+3+4+0+7)/5=2.8。
把一個點的特定長度或形狀的鄰域稱作窗口。在一維情況下,中值濾波器是一個含有奇數個像素的滑動窗口。中值濾波很容易推廣到二維,此時可以利用二維形式的窗口。
對於平面圖像採用的二維中值濾波可以由下式表示:
(式4-3)
式中:A為窗口,{fij}為二維數據序列,即數字圖像各點的灰度值。
對於本系統,由於採集到的是24位真彩色圖像,每個像素點分別有R、G、B三個灰度分量,故要在窗口內分別找到這三個分量的中值,分別用這三個中值去代替窗口中心像素點的R、G、B三個灰度分量的值。

c語言程序,本屌是初學者所以麻煩不要用太高級的語句謝謝QAQ

額 我的數字信號處理學的很差,但是我大概了解了下,是不是這個意思首先由兩個sin函數構成了一個輸入信號,在數字信號處理中叫做激勵的東西,然後您給了一個平滑濾波的公式,於是您期望輸出信號,也就是信號與系統中所說的Y(z)=H(z)*X(z)如果是的話。那麼我就上圖了。

intExcitationSignal(intN,float*OutSignalBuffer)
{
floatPi=3.14;
floatx=0;
inti;
for(i=0;i<=N;i++,x++)
{
*(OutSignalBuffer+i)=sin(0.05*Pi*x)+0.1*sin(0.7*Pi*x);

}

return0;
}
voidPrint(float*Buffer,intN)
{
inti=0;
for(i=0;i<N;i++)
printf(" [%d] [%f] ",i,*(Buffer+i));
}

voidtest()
{
float*InS;
InS=(float*)malloc(sizeof(float)*128);
float*OutS;
OutS=(float*)malloc(sizeof(float)*128);

ExcitationSignal(127,InS);
//Print(InS,127);


intj,i;
for(j=0;j<124;j++)
Smooth(i,j,3,InS,OutS);
Print(OutS,124);

}
intmain(void)
{
test();
getchar();
return0;
}

我程序中子函數中malloc但是沒有free,你可以看情況free下。

❸ 低通平滑濾波

你是不懂低通,還是不懂平滑,還是不懂濾波啊.

先講講低通平滑濾波的作用吧.(這種知識10分有些少了)

信號採集有採集前濾波和採集後濾波.

以你的問題咱們把重點放在後濾波上.

咱們採集來的信號,如果它的數據信息在低頻部分就需要使用低通平滑濾波.

這是為什麼呢?

對於特定電路因為咱們採集來的信號中摻雜著很多高頻干擾,使信號波形看上去很亂.如果咱們使用參數到位的低通濾波濾除高頻干擾,這時咱們的信號就會很工整,很平滑.這就是低通平滑濾波.

補充:
kenyp我是個模擬電路工程師,沒用過DSP.數字濾波器的知識只停留在書本階段.

就我對信號採集的知識可能對你的需求不能帶來實質性的成效.

我談談我的理解:

!!一般都是在AD轉換前進行濾波處理

咱們常用的感測器會把物理量轉化成 頻率 或 電壓.

轉化成頻率的在AD轉換前一定要加濾波器.

轉化成電壓的則視工作環境而定.如果工廠里使用,AD轉換前一定要加濾波器.

我做過一個民用室內產品,工作環境很穩定,但客戶堅持要加濾波器.

你所說的"AD模塊轉換成的數據有無進行平滑濾波的必要"如果是對電壓值進行采樣的話,我的理解完全沒有必要.(你用的溫感也一定輸出的是電壓量不是頻率量).首先,溫度變化率很低,你的采樣頻率比它N倍.干嗎要濾波?

你所說的"低通平滑濾波的實現是在哪個環節",我的理解低通平滑濾波就是去毛刺.由於毛刺頻率很高,數字濾波器的性能好,適合濾除毛刺.比如說數字示波器 顯示單元的前級一頂要用平滑濾波.

見笑了,我就懂那麼多.

❹ 為什麼平滑濾波相當於低通濾波器

平滑濾波的曲線頻率是很低的,相當於低通濾波器,讓低頻通過。

❺ 如何用C語言實現PCM編碼

  1. PCM 脈沖編碼調制是Pulse Code Molation的縮寫。脈沖編碼調制是數字通信的編碼方式之一。主要過程是將話音、圖像等模擬信號每隔一定時間進行取樣,使其離散化,同時將抽樣值按分層單位四捨五入取整量化,同時將抽樣值按一組二進制碼來表示抽樣脈沖的幅值。
    模擬信號數字化必須經過三個過程,即抽樣、量化和編碼,以實現話音數字化的脈沖編碼調制(PCM,Pulse Coding Molation)技術。
    抽樣(Sampling)
    抽樣是把模擬信號以其信號帶寬2倍以上的頻率提取樣值,變為在時間軸上離散的抽樣信號的過程。例如,話音信號帶寬被限制在0.3~3.4kHz內,用 8kHz的抽樣頻率(fs),就可獲得能取代原來連續話音信號的抽樣信號。對一個正弦信號進行抽樣獲得的抽樣信號是一個脈沖幅度調制(PAM)信號,如下圖對模擬正弦信號的抽樣所示。對抽樣信號進行檢波和平滑濾波,即可還原出原來的模擬信號。
    量化(quantizing)
    抽樣信號雖然是時間軸上離散的信號,但仍然是模擬信號,其樣值在一定的取值范圍內,可有無限多個值。顯然,對無限個樣值一一給出數字碼組來對應是不可能的。為了實現以數字碼表示樣值,必須採用「四捨五入」的方法把樣值分級「取整」,使一定取值范圍內的樣值由無限多個值變為有限個值。這一過程稱為量化。
    量化後的抽樣信號與量化前的抽樣信號相比較,當然有所失真,且不再是模擬信號。這種量化失真在接收端還原模擬信號時表現為雜訊,並稱為量化雜訊。量化雜訊的大小取決於把樣值分級「取整」的方式,分的級數越多,即量化級差或間隔越小,量化雜訊也越小。
    編碼(Coding)
    量化後的抽樣信號在一定的取值范圍內僅有有限個可取的樣值,且信號正、負幅度分布的對稱性使正、負樣值的個數相等,正、負向的量化級對稱分布。若將有限個 量化樣值的絕對值從小到大依次排列,並對應地依次賦予一個十進制數字代碼(例如,賦予樣值0的十進制數字代碼為0),在碼前以「+」、「-」號為前綴,來 區分樣值的正、負,則量化後的抽樣信號就轉化為按抽樣時序排列的一串十進制數字碼流,即十進制數字信號。簡單高效的數據系統是二進制碼系統,因此,應將十 進制數字代碼變換成二進制編碼。根據十進制數字代碼的總個數,可以確定所需二進制編碼的位數,即字長。這種把量化的抽樣信號變換成給定字長的二進制碼流的 過程稱為編碼。

  2. 常式:

    #include<iostream>
    usingnamespacestd;
    intmain()
    {
    constintsect=8;//numberofsegement.
    constintstartingVol[sect+1]={0,16,32,64,128,256,512,1024,2048};
    //.
    constintquanIntvl[sect]={1,1,2,4,8,16,32,64};
    //,1equealto1/2048.
    intpcmInd=0;//pcmcode'sindex.
    intpcmCode[sect]={0,0,0,0,0,0,0,0};//8bitofpcmcodes.
    intsampleValue=1270;
    intstartPoint;//
    //suchasstartingVol[startPoint]=16or128etc.
    intfinePoint;//.
    intquanValue;//it'.
    intquanError;//errorcausedbyquantity.
    //
    intlow=0;

    inthigh=sect;

    intmid;
    intloopInd1=0;//loopindextogetsegmentcode
    intloopInd2=0;//
    //getthefirst_digitcodeofpolarity
    (sampleValue>0)?(pcmCode[pcmInd++]=1):(pcmCode[pcmInd]=0);

    sampleValue=abs(sampleValue);//makesurethevoltageispositive
    //
    while(loopInd1<3)//
    {
    mid=(low+high)/2;
    //after3loops,sampeValuefallsinstartingVol[mid]-startingVol[mid]or
    //instartingVol[mid-1]-startingVol[mid]
    if(sampleValue<startingVol[mid])
    {
    pcmCode[pcmInd++]=0;
    high=mid;
    startPoint=mid-1;
    }
    else
    {
    pcmCode[pcmInd++]=1;
    low=mid;
    startPoint=mid;
    }
    loopInd1++;
    }//endwhile
    //getthelastfourbitscodesofpcm
    low=0;
    high=16;//

    while(loopInd2<4)
    {
    mid=(low+high)/2;

    //.
    quanValue=startingVol[startPoint]+mid*quanIntvl[startPoint];
    cout<<startingVol[startPoint]<<"+"<<quanIntvl[startPoint]<<"*"<<mid<<"="
    <<quanValue<<"?"<<sampleValue<<endl;
    //.

    if(sampleValue<startingVol[startPoint]+mid*quanIntvl[startPoint])
    {
    pcmCode[pcmInd++]=0;
    high=mid;
    finePoint=mid-1;
    }
    else
    {
    pcmCode[pcmInd++]=1;
    low=mid;
    finePoint=mid;
    }
    loopInd2++;
    }//endwhile
    quanValue=startingVol[startPoint]+finePoint*quanIntvl[startPoint];

    quanValue+=quanIntvl[startPoint]/2;//finalquantityvalue.
    quanError=abs(sampleValue-quanValue);//errorofquantity.
    cout<<"Finalquantityvalueis:"<<quanValue<<endl;
    cout<<"Errorofquantityis:"<<quanError<<endl;
    cout<<"PCMcodesare:";
    for(inti=0;i<8;i++)

    {
    cout<<pcmCode[i]<<"";
    }//endfor
    cout<<endl;
    return0;
    }

❻ 平滑濾波的介紹

平滑濾波是低頻增強的空間域濾波技術。它的目的有兩類:一類是模糊;另一類是消除噪音。空間域的平滑濾波一般採用簡單平均法進行,就是求鄰近像元點的平均亮度值。鄰域的大小與平滑的效果直接相關,鄰域越大平滑的效果越好,但鄰域過大,平滑會使邊緣信息損失的越大,從而使輸出的圖像變得模糊,因此需合理選擇鄰域的大小。

❼ 空間濾波的平滑、銳化濾波器的異同點及相互聯系

空域濾波技術根據功能主要分為平滑濾波與銳化濾波。 平滑濾波能減弱或消除圖像中的高頻率分量而不影響低頻分量,高頻分量對應圖像中的區域邊緣等灰度值具有較大變化的部分,平滑濾波可將這些分量濾去減少局部灰度起伏,使圖像變得比較平滑。也可用於消除雜訊,或在提取較大目標前去除太小的細節或將目標的小間斷連接起來。
銳化濾波正好相反,銳化濾波常用於增強被模糊的細節或目標的邊緣,強化圖像的細節。 忘採納~

❽ 平滑濾波的其他方式

頻率域濾波是將圖像從空間或時間域轉換到頻率域,再利用變換系數反映某些圖像特徵的性質進行圖像濾波的方法。傅立葉變換是一種常用的變換。在傅立葉變換域,頻譜的直流分量正比於圖像的平均亮度,雜訊對應於頻率較高的區域,圖像實體位於頻率較低的區域。圖像在變換具有的這些內在特性可被用於圖像濾波。可以構造一個低通濾波器,使低頻分量順利通過而有效地阻於高頻分量,即可濾除圖像的雜訊,再經過反變換來取得平滑的圖像。
低通的數學表達式如下式所示:
G(u,v)=F(u,v)H(u,v)
式中F (u, v)一含有雜訊的原圖像的傅立葉變換;
H (u, v)一為傳遞函數,也稱轉移函數(即低通濾波器);
G (u, v)一為經低通濾波後輸出圖像的傅立葉變換。
H濾波濾去高頻成分,而低頻信息基本無損失地通過。濾波後,經傅立葉變換反變換可得平滑圖像,即選擇適當的傳遞函數H (u, v),對頻率域低通濾波關系重大。常用的傳遞函數有梯形函數、指數函數、巴特沃思函數等。頻域常用的幾種低通濾波器為理想低通濾波器(Ideal circular Iow-passfilter)、巴特沃思(Butterworth)低通濾波器、指數低通濾波器及梯形低通濾波器。這些低通濾波器,都能在圖像內有雜訊干擾成分時起到改善的作用。
常用的平面空間域濾波法有兩類
一類是擬合圖像的方法,包括n階多項式擬合、離散正交多項式擬合、二次曲面擬合等多種方法;另一類是平滑圖像的方法,包括領域平均法、中值濾波法、梯度倒數加權法、選擇式掩模法等。
首先是高斯濾波器
高斯濾波器是平滑線性濾波器的一種,線性濾波器很適合於去除高斯雜訊。而非線性濾波則很適合用於去除脈沖雜訊,中值濾波就是非線性濾波的一種。平滑濾波器就是用濾波掩模確定的鄰域內像素的平均灰度值去替代圖像的每個像素點的值,這很容易用硬體實現。而高斯濾波器是帶有權重的平均值,即加權平均,中心的權重比鄰近像素的權重更大,這樣就可以克服邊界效應。高斯濾波如果採用3×3掩模的具體公式如下:
g(x,y)={f(x-1,y-1)+f(x-1,y+1)+f(x+1,y-1)+f(x+1,y+1)+[f(x-1,y)+f(x,y-1)+f(x+1,y)+f(x,y+1)]*2+f(x,y)*4}/16;
其中,f(x,y)為原圖像中(x,y)像素點的灰度值,g(x,y)為經過高斯濾波和的值。
上述的公式可以結構化為3×3的掩模如下:
×1/16
從結構化掩模中可以看到,處於掩模中心的位置比其他任何像素的權值都大,因此在均值計算中給定的這一像素顯得更為重要。而距離掩模中心較遠的像素就顯得不太重要,這樣做是為了減小平滑處理中的模糊。當然可以採取其他的權重達到相同的目的,其中16=1+2+1+2+4+2+1+2+1。但是由於1、2、4、16都是2的整數次冪很便於硬體的實現。
具體的參考數字圖像處理的經典書——岡薩雷斯的《數字圖像處理(matlab版)》藉此機會希望有更多喜歡「圖像處理+FPGA」的同學一同探討這本書上的精華。
其次是中值濾波器
中值濾波器是統計濾波器的一種,屬於非線性的的空間濾波器。正如其名,它是將像素(中值計算中包括的原像素值)鄰域內灰度的中值代替該像素的值。中值濾波器的使用非常普遍,這是因為對於一定類型的隨機雜訊,它提供了優秀的去噪能力,比小尺寸的線性平滑濾波器的模糊程度明顯要低。中值濾波器對處理脈沖雜訊非常有效。中值濾波器在FPGA上實現起來相對高斯濾波的難度更大一點。因為它要對相鄰的像素進行排序,需要用到一些比較器。
雖然說中值濾波器對脈沖信號很有效,但是僅採用簡單的中值濾波將不可避免的丟失圖像的細節,造成視覺效果的模糊。於是後來又些人提出了一些改進的方法,如基於個數判斷的脈沖雜訊的中值濾波器、自適應門限的中值濾波器、多窗口下的自適應中值濾波器等等。

❾ 討論於平滑處理的濾波器和用於銳化處理的濾波器之間的區別和聯系

1.相同點:都能減弱或消除傅里葉空間的某些分量,而不影響或較少影響其他分量,從而達到增強某些頻率分量的效果。 
2.不同點:頻率濾波器減弱或消除了傅里葉空間的高頻分量,所以達到了增強某些低頻分量、平滑圖像中細節的效果。銳化濾波器減弱或消除傅里葉空間的低頻分量,所以達到了增強了高頻分量、銳化圖像中細節效果。 
3.聯系:兩者效果相反,互為補充,從原始圖像中減去平滑濾波器的結果得到銳化濾波器的效果,而從原始圖像中減去銳化濾波器的結果則可以得到平滑濾波器的效果。

❿ 數字圖像處理中,既然平滑濾波器會造成圖像模糊,那麼這到底是退化呢還是增強呢

增強,你既然有這個疑問那你也知道濾波器多種多樣每一種濾波器功能是獨特的,而且其用途也是獨特的,因此並不是任何場合下都可以使用平滑濾波器,從人的角度來講,人總是希望圖像能夠朝著有利於人觀察或者是有利於人的後續處理的方向變化,比如說在一幅圖像中存在很多雜訊,但是我僅僅希望得到其中很大的一個物品的輪廓,那麼使用平滑去噪就可以將雜訊模糊掉,這樣一來就使得圖像朝著我希望的方向變化。

熱點內容
手機無線路由器怎麼設置密碼 發布:2025-05-12 05:18:28 瀏覽:815
渝人解壓密碼 發布:2025-05-12 05:18:12 瀏覽:768
備份網站資料庫備份 發布:2025-05-12 05:04:35 瀏覽:52
轉移的存儲卡 發布:2025-05-12 04:51:18 瀏覽:466
c語言大數相加 發布:2025-05-12 04:51:13 瀏覽:589
安卓內存大小有什麼影響 發布:2025-05-12 04:41:36 瀏覽:50
以下c語言常量錯誤的是 發布:2025-05-12 04:40:39 瀏覽:808
怎麼降低qq版本安卓80 發布:2025-05-12 04:40:39 瀏覽:190
一個密碼多少人知道後就不是秘密 發布:2025-05-12 04:26:07 瀏覽:521
ftp埠非21 發布:2025-05-12 04:09:09 瀏覽:229