基於MATLAB的均值濾波算法實現


  在圖像采集和生成中會不可避免的引入噪聲,圖像噪聲是指存在於圖像數據中的不必要的或多余的干擾信息,這對我們對圖像信息的提取造成干擾,所以要進行去噪聲處理,常見的去除噪聲的方法有均值濾波、中值濾波、高斯濾波等,這一篇要實現的是均值濾波。

  均值濾波的方法是將圖像數據生成3x3的矩陣或是5x5等其他模板,然后對這個矩陣模板進行處理。在圖像上對目標像素給一個模板,該模板包括了其周圍的臨近像素(以目標象素為中心的周圍 8 個像素,構成一個濾波模板,即去掉目標像素本身),再用模板中的全體像素的平均值來代替原來像素值。說白了就是對這九個數求個平均值代替中間的那個數。在FPGA中我們為了簡便運算只將目標像素周圍八個點求和然后除以8,取代目標像素點。

 

    MATLAB對數字圖像處理有各種函數支持,各種濾波和邊緣檢測都可以之間用幾行函數實現,但是博主本着學習算法的基本原理,所以不用函數自己根據濾波原理寫代碼。本設計是在上一篇RGB轉Gray后的灰度圖進行濾波處理。

添加噪聲污染函數

g = imnoise(I,type,parameters)

g=imnoise(f,'salt & pepper',d)用椒鹽噪聲污染圖像f,其中d是噪聲密度(即包括噪聲值的圖像區域的百分比)。因此,大約有d*numel(f)個像素受到影響。默認的噪聲密度為0.05。

    本設計只用到了對椒鹽噪聲的處理,所以僅記錄這一種噪聲的添加。

均值濾波代碼

 1 %Mean Filter
 2 clc;
 3 clear all;
 4 close all;
 5 
 6 RGB_data = imread('lena.jpg');
 7 
 8 R_data =    RGB_data(:,:,1);
 9 G_data =    RGB_data(:,:,2);
10 B_data =    RGB_data(:,:,3);
11 
12 %imshow(RGB_data);
13 
14 [ROW,COL, DIM] = size(RGB_data); 
15 
16 Y_data = zeros(ROW,COL);
17 Cb_data = zeros(ROW,COL);
18 Cr_data = zeros(ROW,COL);
19 Gray_data = RGB_data;
20 
21 for r = 1:ROW 
22     for c = 1:COL
23         Y_data(r, c) = 0.299*R_data(r, c) + 0.587*G_data(r, c) + 0.114*B_data(r, c);
24         Cb_data(r, c) = -0.172*R_data(r, c) - 0.339*G_data(r, c) + 0.511*B_data(r, c) + 128;
25         Cr_data(r, c) = 0.511*R_data(r, c) - 0.428*G_data(r, c) - 0.083*B_data(r, c) + 128;
26     end
27 end 
28 
29 Gray_data(:,:,1)=Y_data;
30 Gray_data(:,:,2)=Y_data;
31 Gray_data(:,:,3)=Y_data;
32 
33 figure;
34 imshow(Gray_data);
35 
36 %Gray Mean Filter
37 
38 Gray_data = im2double(Gray_data);
39 imgn = imnoise(Gray_data,'salt & pepper',0.05); 
40 
41 %imgn = Gray_data;
42 
43 figure;
44 imshow(imgn);
45 
46 for r = 2:1:ROW-1
47     for c = 2:1:COL-1
48         Mean_Img(r,c) = (imgn(r-1, c-1) + imgn(r-1, c) + imgn(r-1, c+1) + imgn(r, c-1) + imgn(r, c) + imgn(r, c+1) + imgn(r+1, c-1) + imgn(r+1, c) + imgn(r+1, c+1)) / 9;
49     end
50 end
51 
52 figure;
53 imshow(Mean_Img);

處理前后圖片結果比較

Gray lena

Mean_Filter lena

       從處理前后的圖片中可以看到處理過后的圖片變模糊了一些,這是因為均值濾波就是將圖像做平滑處理,像素值高的像素會被拉低,像素值低像素會被拉高,趨向於一個平均值,所以圖像會變模糊一些。

加入椒鹽噪聲后的lena

加入椒鹽噪聲后Mean_Filter lena

  椒鹽噪聲(salt & pepper noise)是數字圖像的一個常見噪聲,所謂椒鹽,椒就是黑,鹽就是白,椒鹽噪聲就是在圖像上隨機出現黑色白色的像素。椒鹽噪聲是一種因為信號脈沖強度引起的噪聲。這里可以看出均值濾波對雖然是對圖像進行平滑處理,但是對椒鹽噪聲基本無作用,要對椒鹽噪聲處理就要用中值濾波了,博主下一篇再接着做。

 

轉載請注明出處:NingHeChuan(寧河川)

個人微信訂閱號:開源FPGA

如果你想及時收到個人撰寫的博文推送,可以掃描左邊二維碼(或者長按識別二維碼)關注個人微信訂閱號

知乎ID:NingHeChuan

微博ID:NingHeChuan

原文地址:https://www.cnblogs.com/ninghechuan/p/9526100.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM