在圖像采集和生成中會不可避免的引入噪聲,圖像噪聲是指存在于圖像數據中的不必要的或多余的干擾信息,這對我們對圖像信息的提取造成干擾,所以要進行去噪聲處理,常見的去除噪聲的方法有均值濾波、中值濾波、高斯濾波等,這一篇要實現的是均值濾波。
均值濾波的方法是將圖像數據生成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:COL23 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 end27 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 Filter37 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-147 for c = 2:1:COL-148 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 end50 end51 52 figure;53 imshow(Mean_Img);
處理前后圖片結果比較
Gray lena
Mean_Filter lena
從處理前后的圖片中可以看到處理過后的圖片變模糊了一些,這是因為均值濾波就是將圖像做平滑處理,像素值高的像素會被拉低,像素值低像素會被拉高,趨向于一個平均值,所以圖像會變模糊一些。
加入椒鹽噪聲后的lena
加入椒鹽噪聲后Mean_Filter lena
椒鹽噪聲(salt & pepper noise)是數字圖像的一個常見噪聲,所謂椒鹽,椒就是黑,鹽就是白,椒鹽噪聲就是在圖像上隨機出現黑色白色的像素。椒鹽噪聲是一種因為信號脈沖強度引起的噪聲。這里可以看出均值濾波對雖然是對圖像進行平滑處理,但是對椒鹽噪聲基本無作用,要對椒鹽噪聲處理就要用中值濾波了,博主下一篇再接著做。
-
圖像采集
+關注
關注
2文章
299瀏覽量
41257 -
函數
+關注
關注
3文章
4308瀏覽量
62445 -
均值濾波
+關注
關注
0文章
10瀏覽量
7097
原文標題:基于MATLAB的均值濾波算法實現
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論