均值濾波c語言
1. 下面這段單片機c語言程序是一段濾波函數是什麼意思麻煩給講解一下
GetADC(1); //AD轉換開始函數
Current_buf += ADCR; //將AD值疊加
CurrentVal =(word)(Current_buf>>2); //8位AD,配置的是左對齊,要右移兩位得到正確值
Current_buf -= CurrentVal; //感覺不是濾波,不清楚這行的目的。
2. 各位大哥救命,兩道C語言數字圖像處理作業!大蝦救命
作業1非常簡單,樓本不是樓上說的沒其他lib就不能做,只要把bmp文件的文件頭和點陣圖信息結構去掉,剩下的數據就是RAW了。根本不需要其他lib文件。只需要用C的標准庫函數就完全可以非常簡單的實現了。
3. 關於c++中均值濾波求助
這個filter是用來平滑圖像用的,簡單來說是對一幅(width * height)大小的圖像按下述方法進行平滑化,以達到除去圖像中雜訊的目的。 首先把輸入圖像中每個像素點和該像素點四周的8個像素點作為一組來看,將這9個像素點的灰度進行排序後取最中間的...
4. 請教C語言 如何濾除採集回來跳變的數據,如何判斷採集回來的數據是增大還是減小
1)去除異常(隨機雜訊)值
按描述,估計採集的是緩變信號。如果是的話,可以採用均值法濾波:求前N-1次採集值的均值後,與最近一次採集值比較(求差值),如果差值超過一定范圍,則丟棄;否則保留。
2)判斷遞增遞減
比較理想的方法是利用最近採集的N點數據做樣條函數y=x(t),可以是二次樣條或三次樣條,具體採用幾次樣條,同樣要有被測信號特性決定。然後再對樣條函數求導(dy/dt )即可判斷出遞增遞減趨勢。點數值N大於等4個比較合適
5. c++ 5*5均值濾波器
程序當然要寫,才能完成了;但是,對你的問題,沒有理解?
每個像素點是R、G、B三個顏色值,有效值是0-255;
你說的是5*5內所有像素和,將是一個什麼類型的顏色數值,圖像會變成什麼樣子?
6. 數字圖像處理均值濾波器在c++上實現
/**
** method to remove noise from the corrupted image by mean value
* @param corrupted input grayscale binary array with corrupted info
* @param smooth output data for smooth result, the memory need to be allocated outside of the function
* @param width width of the input grayscale image
* @param height height of the input grayscale image
*/
void meanFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height)
{
memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) );
for (int j=1;j<height-1;j++)
{
for (int i=1;i<width-1;i++)
{
smooth [ j*width+i ] = (corrupted [ (j-1)*width+(i-1) ] + corrupted [ (j-1)*width+i] + corrupted [ (j-1)*width+(i+1) ] +
corrupted [ j*width+(i-1) ]+ corrupted [ j*width+i] + corrupted [ j*width+(i+1) ] +
corrupted [ (j+1)*width+(i-1) ] + corrupted [ (j+1)*width+i] + corrupted [ (j+1)*width+(i+1) ] ) / 9;
}
}
}
7. 使用C++代碼完成 均值濾波器、中值濾波器、最大值濾波器、最小值濾波器分別對灰度圖進行濾波
//中值濾波和均值大概這個樣子
intnByteWidth=nWidth*3;
if(nByteWidth%4)nByteWidth+=4-(nByteWidth%4);
BYTEp[9],s;
inti,j;
for(y=1;y<nHeight-1;y++)
{
for(x=3;x<nWidth*3-3;x++)
{
//把一個像素周圍的8個像素值分別賦值給p[0]到p[8]
p[0]=lpInput[x-3+(y-1)*nByteWidth];
p[1]=lpInput[x+(y-1)*nByteWidth];
p[2]=lpInput[x+3+(y-1)*nByteWidth];
p[3]=lpInput[x-3+y*nByteWidth];
p[4]=lpInput[x+y*nByteWidth];
p[5]=lpInput[x+3+y*nByteWidth];
p[6]=lpInput[x-3+(y+1)*nByteWidth];
p[7]=lpInput[x+(y+1)*nByteWidth];
p[8]=lpInput[x+3+(y+1)*nByteWidth];
//將p[0]到p[8]從小到大排列
for(j=0;j<5;j++)
{
for(i=j+1;i<9;i++)
{
if(p[j]>p[i])
{
s=p[j];
p[j]=p[i];
p[i]=s;
}
}
}
//將各點的中值賦值給該像素
lpOutput[x+y*nByteWidth]=p[4];
}
//----------------------------------------
intsr,sg,sb;
intnByteWidth=nWidth*3;
if(nByteWidth%4)nByteWidth+=4-(nByteWidth%4);
for(y=1;y<nHeight-1;y++)
{
for(x=1;x<nWidth-1;x++)
{
p=x*3+y*nByteWidth;
sb=0;
sg=0;
sr=0;
for(y1=-1;y1<=1;y1++)
for(x1=-1;x1<=1;x1++)
{
//像素本身及其周圍的八個像素(3X3窗口內的像素)的blue值之和
sb+=lpInput[(y+y1)*nByteWidth+(x+x1)*3];
//像素本身及其周圍的八個像素(3X3窗口內的像素)的green值之和
sg+=lpInput[(y+y1)*nByteWidth+(x+x1)*3+1];
//像素本身及其周圍的八個像素(3X3窗口內的像素)的red值之和
sr+=lpInput[(y+y1)*nByteWidth+(x+x1)*3+2];
}
//將red,green,blue值的平均值賦值給該像素
lpOutput[p+2]=sr/9;
lpOutput[p+1]=sg/9;
lpOutput[p]=sb/9;
}
}
8. 求解這段C語言程序什麼意思
由於沒有上下文,只能進行以下猜測:
-圖象幅面寬度為640,高度480,象素寬度為24位,實際佔用32位;
-pMem可能是每個單元(32位)存放一個象素;
-RGB是將三個位元組組合成一個象素24位,BGR是將RGB順序的圖象象素中紅和藍的位元組調換;
-前面一個循環將圖象第3行到477行進行均值濾波,濾波方式是將該象素附近8個點與此象素求和再除以9得到平均值;
-後面一個循環是將圖象未做濾波的幾行填充成白色;
-圖象處理演算法可能存在問題:應該利用雙存儲區進行運算,結果為了節省內存導致均值運算會得不到正確運算,比如我們計算屏幕中心點的均值時,取到的左邊一個象素、整個上面的3個象素均已經被之前的均值運算結果覆蓋了,不是原來的象素數據了。也可能是利用高位未使用的位元組存放的處理結果?由於沒有RGB的定義無法判斷。
9. 計算3x3窗口的均值濾波和中值濾波(向下取整保留整數值)。
均值濾波和中值濾波屬於空域圖像增強的處理方法,均值濾波去麻點,中值濾波保邊緣。
要進行均值濾波首先要生成一個3x3矩陣。演算法運算窗口一般採用奇數點的鄰域來計算中值,最常用的窗口有3X3和5X5模型。
1、通過2個或者3個RAM的存儲來實現3X3像素窗口。
2、通過2個或者3個FIFO的存儲來實現3X3像素窗口。
3、通過2行或者3行Shift_RAM的存儲來實現3X3像素窗口。
(9)均值濾波c語言擴展閱讀:
注意事項:
1、空間域指圖像本身,空域變換直接對圖像中的像素進行操作。
2、在進行橫向滑動窗口濾波時,窗口中的像素僅僅是丟掉了左側一列,增加了右側一列數據,如果丟掉中間重疊的這一部分數據,到下個窗口再重新定址和讀取數據,無疑是計算的沉重負擔,所以該演算法的核心思想就是充分利用重疊部分,使用直方圖來計算中值,不需要排序演算法,快,且高效。
3、注意到兩個直方圖的累加是一個O(1)操作,和直方圖的元素個數有關,而直方圖元素個數是由圖像位深決定的。
10. 均值濾波適用於處理什麼樣的雜訊
均值濾波,適用於去除通過掃描得到的圖像中的顆粒雜訊。
均值濾波是典型的線性濾波演算法,它是指在圖像上對目標像素給一個模板,該模板包括了其周圍的臨近像素(以目標象素為中心的周圍8個像素,構成一個濾波模板,即去掉目標像素本身),再用模板中的全體像素的平均值來代替原來像素值。
這種方法保留了大部分包含信號的小波系數,因此可以較好地保持圖像細節。小波分析進行圖像去噪主要有3個方面:
(1)對圖像信號進行小波分解。
(2)對經過層次分解後的高頻系數進行閾值量化。
(3)利用二維小波重構圖像信號。
(10)均值濾波c語言擴展閱讀:
均值濾波也稱為線性濾波,其採用的主要方法為鄰域平均法。線性濾波的基本原理是用均值代替原圖像中的各個像素值,即對待處理的當前像素點(x,y),選擇一個模板。
該模板由其近鄰的若干像素組成,求模板中所有像素的均值,再把該均值賦予當前像素點(x,y),作為處理後圖像在該點上的灰度個g(x,y),即個g(x,y)=1/m ∑f(x,y) m為該模板中包含當前像素在內的像素總個數。
均值濾波本身存在著固有的缺陷,即它不能很好地保護圖像細節,在圖像去噪的同時也破壞了圖像的細節部分,從而使圖像變得模糊,不能很好地去除雜訊點。