在圖像采集和生成中會(huì)不可避免的引入噪聲,圖像噪聲是指存在于圖像數(shù)據(jù)中的不必要的或多余的干擾信息,這對(duì)我們對(duì)圖像信息的提取造成干擾,所以要進(jìn)行去噪聲處理,常見的去除噪聲的方法有均值濾波、中值濾波、高斯濾波等,這一篇要實(shí)現(xiàn)的是均值濾波。
均值濾波的方法是將圖像數(shù)據(jù)生成3x3的矩陣或是5x5等其他模板,然后對(duì)這個(gè)矩陣模板進(jìn)行處理。在圖像上對(duì)目標(biāo)像素給一個(gè)模板,該模板包括了其周圍的臨近像素(以目標(biāo)象素為中心的周圍 8 個(gè)像素,構(gòu)成一個(gè)濾波模板,即去掉目標(biāo)像素本身),再用模板中的全體像素的平均值來代替原來像素值。說白了就是對(duì)這九個(gè)數(shù)求個(gè)平均值代替中間的那個(gè)數(shù)。在FPGA中我們?yōu)榱撕?jiǎn)便運(yùn)算只將目標(biāo)像素周圍八個(gè)點(diǎn)求和然后除以8,取代目標(biāo)像素點(diǎn)。
MATLAB對(duì)數(shù)字圖像處理有各種函數(shù)支持,各種濾波和邊緣檢測(cè)都可以之間用幾行函數(shù)實(shí)現(xiàn),但是博主本著學(xué)習(xí)算法的基本原理,所以不用函數(shù)自己根據(jù)濾波原理寫代碼。本設(shè)計(jì)是在上一篇RGB轉(zhuǎn)Gray后的灰度圖進(jìn)行濾波處理。
添加噪聲污染函數(shù)
g = imnoise(I,type,parameters)
g=imnoise(f,'salt & pepper',d)用椒鹽噪聲污染圖像f,其中d是噪聲密度(即包括噪聲值的圖像區(qū)域的百分比)。因此,大約有d*numel(f)個(gè)像素受到影響。默認(rèn)的噪聲密度為0.05。
本設(shè)計(jì)只用到了對(duì)椒鹽噪聲的處理,所以僅記錄這一種噪聲的添加。
均值濾波代碼
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);
處理前后圖片結(jié)果比較
Gray lena
Mean_Filter lena
從處理前后的圖片中可以看到處理過后的圖片變模糊了一些,這是因?yàn)榫禐V波就是將圖像做平滑處理,像素值高的像素會(huì)被拉低,像素值低像素會(huì)被拉高,趨向于一個(gè)平均值,所以圖像會(huì)變模糊一些。
加入椒鹽噪聲后的lena
加入椒鹽噪聲后Mean_Filter lena
椒鹽噪聲(salt & pepper noise)是數(shù)字圖像的一個(gè)常見噪聲,所謂椒鹽,椒就是黑,鹽就是白,椒鹽噪聲就是在圖像上隨機(jī)出現(xiàn)黑色白色的像素。椒鹽噪聲是一種因?yàn)?a target="_blank">信號(hào)脈沖強(qiáng)度引起的噪聲。這里可以看出均值濾波對(duì)雖然是對(duì)圖像進(jìn)行平滑處理,但是對(duì)椒鹽噪聲基本無作用,要對(duì)椒鹽噪聲處理就要用中值濾波了,博主下一篇再接著做。
-
圖像采集
+關(guān)注
關(guān)注
2文章
307瀏覽量
41594 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4374瀏覽量
64390 -
均值濾波
+關(guān)注
關(guān)注
0文章
10瀏覽量
7192
原文標(biāo)題:基于MATLAB的均值濾波算法實(shí)現(xiàn)
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
數(shù)字圖像處理
【下載】《數(shù)字圖像處理的MATLAB實(shí)現(xiàn)(第2版)》
應(yīng)用MATLAB語言處理數(shù)字信號(hào)與數(shù)字圖像
MATLAB在數(shù)字圖像處理中的應(yīng)用
基于MATLAB的數(shù)字圖像二維濾波軟件設(shè)計(jì)
應(yīng)用MATlAB語言處理數(shù)字信號(hào)與數(shù)字圖像
數(shù)字圖像處理與Matlab
數(shù)字圖像處理平臺(tái)系統(tǒng)方案詳解

評(píng)論