基于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。
本设计只用到了对椒盐噪声的处理,所以仅记录这一种噪声的添加。
均值滤波代码
%Mean Filter
clc;
clear all;
close all; RGB_data = imread('lena.jpg'); R_data = RGB_data(:,:,);
G_data = RGB_data(:,:,);
B_data = RGB_data(:,:,); %imshow(RGB_data); [ROW,COL, DIM] = size(RGB_data); Y_data = zeros(ROW,COL);
Cb_data = zeros(ROW,COL);
Cr_data = zeros(ROW,COL);
Gray_data = RGB_data; for r = :ROW
for c = :COL
Y_data(r, c) = 0.299*R_data(r, c) + 0.587*G_data(r, c) + 0.114*B_data(r, c);
Cb_data(r, c) = -0.172*R_data(r, c) - 0.339*G_data(r, c) + 0.511*B_data(r, c) + ;
Cr_data(r, c) = 0.511*R_data(r, c) - 0.428*G_data(r, c) - 0.083*B_data(r, c) + ;
end
end Gray_data(:,:,)=Y_data;
Gray_data(:,:,)=Y_data;
Gray_data(:,:,)=Y_data; figure;
imshow(Gray_data); %Gray Mean Filter Gray_data = im2double(Gray_data);
imgn = imnoise(Gray_data,'salt & pepper',0.05); %imgn = Gray_data; figure;
imshow(imgn); for r = ::ROW-
for c = ::COL-
Mean_Img(r,c) = (imgn(r-, c-) + imgn(r-, c) + imgn(r-, c+) + imgn(r, c-) + imgn(r, c) + imgn(r, c+) + imgn(r+, c-) + imgn(r+, c) + imgn(r+, c+)) / ;
end
end figure;
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的均值滤波算法实现的更多相关文章
- 基于FPGA的均值滤波算法实现
我们为了实现动态图像的滤波算法,用串口发送图像数据到FPGA开发板,经FPGA进行图像处理算法后,动态显示到VGA显示屏上,前面我们把硬件平台已经搭建完成了,后面我们将利用这个硬件基础平台上来实现基于 ...
- 基于FPGA的均值滤波算法的实现
前面实现了基于FPGA的彩色图像转灰度处理,减小了图像的体积,但是其中还是存在许多噪声,会影响图像的边缘检测,所以这一篇就要消除这些噪声,基于灰度图像进行图像的滤波处理,为图像的边缘检测做好夯实基础. ...
- 基于MATLAB的人脸识别算法的研究
基于MATLAB的人脸识别算法的研究 作者:lee神 现如今机器视觉越来越盛行,从智能交通系统的车辆识别,车牌识别到交通标牌的识别:从智能手机的人脸识别的性别识别:如今无人驾驶汽车更是应用了大量的机器 ...
- 基于MATLAB的腐蚀膨胀算法实现
本篇文章要分享的是基于MATLAB的腐蚀膨胀算法实现,腐蚀膨胀是形态学图像处理的基础,腐蚀在二值图像的基础上做“收缩”或“细化”操作,膨胀在二值图像的基础上做“加长”或“变粗”的操作. 什么是二值图像 ...
- 基于MATLAB的Sobel边缘检测算法实现
图像边缘就是图像灰度值突变的地方,也就是图像在该部分的像素值变化速度非常之快,就比如在坐标轴上一条曲线有刚开始的平滑突然来个大转弯,在变化出的导数非常大. Sobel算子主要用作边缘检测,它是一离散型 ...
- 非局部均值滤波算法的python实现
如题,比opencv自带的实现效果好 #coding:utf8 import cv2 import numpy as np def psnr(A, B): return 10*np.log(255*2 ...
- 基于FPGA的中值滤波算法实现
在这一篇开篇之前,我需要解决一个问题,上一篇我们实现了基于FPGA的均值滤波算法的实现,最后的显示效果图上发现有一些黑白色的斑点,我以为是椒盐噪声,然后在做基于FPGA的中值滤波算法的实验时,我发现黑 ...
- 基于FPGA的腐蚀膨胀算法实现
本篇文章我要写的是基于的腐蚀膨胀算法实现,腐蚀膨胀是形态学图像处理的基础,,腐蚀在二值图像的基础上做"收缩"或"细化"操作,膨胀在二值图像的基础上做" ...
- 图像处理之均值滤波介绍及C算法实现
1 均值滤波介绍 滤波是滤波是将信号中特定波段频率滤除的操作,是从含有干扰的接收信号中提取有用信号的一种技术. 均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临 ...
随机推荐
- ingress 密码验证
traefik ingress 上面的方式需要引入haprox或者nginx,多引入了一个代理转发层,其实ingress本身就提供了basic auth的支持,在ingress规则中添加额外的认证an ...
- General error 2006 MySQL server has gone away
写入配置文件的办法: max_allowed_packet = 16M //但是这种有时候不支持,1024*1024*16这种有的也不支持 max_allowed_packet = 16777216 ...
- eclipse UTF-8
1. 你本地开发环境IDE,默认配置也是gbk,改为utf82. 检查你tomcat等服务器中间件GBK改成UTF8eclipse工作空间的编码设置成UTF-8,具体操作是:windows---pre ...
- 网站发布时候,图片,css,js等都不显示
因为IIS里面的MIME类型没有添加,就是安装IIS时候没有勾选对.需要重新勾选,安装IIS.
- <input type="date">设置默认当前日期
日期选择器如下: <input type="date" id="start_date" name="start_date"> 注 ...
- MyBatis配置数据源的两种方式
---------------------siwuxie095 MyBatis 配置数据源的两种方式 1.配置方 ...
- 设置网站默认用IE7打开
head中加入以下内容 <meta http-equiv="X-UA-Compatible" content="IE=7" />
- Html的Padding,Margin自己理解图
Html的Padding,Margin自己理解图.
- 绘制3D的js库
有哪些值得推荐的绘制3D的js库? 4 个回答 默认排序 草皮子 HTML5/GAME 4 人赞同了该回答 只用过three.js,所以推荐这个.不清楚你打算用来做什么,总的来说,得看你的运 ...
- myschool 1204
http://oj.jxust.edu.cn/problem.php?id=1274 #include <iostream> #include <set> using name ...