1. 程式人生 > >基於MATLAB的均值濾波算法實現

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

微信訂閱號 均值 圖像處理 支持 num for float 這一 mod

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

  均值濾波的方法是將圖像數據生成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

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