网站首页 > 技术教程 正文
赢一个双肩背包
有多难?
戳一下试试看!
→_→
长摁识别
高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。
高斯滤波器使用模块确定的领域内像素的加权平均值代替图像中的每个像素的值,这种处理的降低了图像灰度的剧烈变化,由于典型的随机噪声表现为灰度的急剧变化,因此,使用这种加权平均的滤波器的结果就是降低噪声,当然,这种处理必然会模糊图像边缘、轮廓。一般这种滤波器在应用过程中都使用“滑窗”的方式来实现,高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
由于高斯噪声服从正态分布,一幅受高斯噪声污染的图像各个像素值与原值的偏离程序总体上符合正态分布,下面上一种经典的高斯滤波掩膜,随着高斯噪声方差的变化,掩膜内系数需做相应调整。
1 | 2 | 1 |
2 | 4 | 2 |
1 | 2 | 1 |
Matlab中有现成的高斯滤波函数,先调用fspecial生成滤波器,再调用imfilter,并使用滤波器,即可完成滤波。
sigma = 0.5; gaussFilter = fspecial('gaussian',[5 5],sigma); ImGauss=imfilter(im1,gaussFilter,'replicate'); imshow(ImGauss);
但对于FPGA析级代码来说,需要自己写滤波器,通常使用移位寄存器来生成,编写自适应滤波难度太大,我也没有试过,固定系数的滤波器实现起来倒是比较方便,在板级实现前,先做个matlab仿真。
代码如下:
clc; clear all; close all; im1 = imread('lena_gray.tif'); %原始图像 [m,n] = size(im1); im2 = uint16(zeros(m,n)); %定义一滤波后图像 im3 = uint16(im1); %转换到16bit %为了实现对边缘的滤波,对图像进行扩展 im1_mid1 = uint16(zeros(m+2,n+2)); im1_mid1(2:m+1,2:n+1) = im3; im1_mid1(1,2:n+1) = im1_mid1(3,2:n+1); im1_mid1(m+2,2:n+1) = im1_mid1(m,2:n+1); im1_mid1(1:m+2,1) = im1_mid1(1:m+2,3); im1_mid1(1:m+2,n+2) = im1_mid1(1:m+2,n+2); %为了实现对边缘的滤波,对图像进行扩展 %掩模 % 1 2 1 % 2 4 2 % 1 2 1 for i=2:1:m+1 for j=2:1:n+1 im2(i-1,j-1) = (im1_mid1(i-1,j-1)+2*im1_mid1(i-1,j)+im1_mid1(i-1,j+1)... +2*im1_mid1(i,j-1)+4*im1_mid1(i,j)+2*im1_mid1(i,j+1)+im1_mid1(i+1,j-1)... +2*im1_mid1(i+1,j)+im1_mid1(i+1,j+1))/16; end end subplot(1,2,1); imshow(im1); title('滤波前原始图像'); subplot(1,2,2); imshow(uint8(im2)); title('滤波后图像');
图像平滑效果如下图所示
图像去噪效果如下图所示
对于滑窗方式的计算,在FPGA实现时往往使用移位寄存器来实现,一般选择3个tap,由于我的图像位宽为14bit,每行数据为320个像素,在配置shift register时设置如下。
配置好后,正常工作时,移位寄存器将同时输出3行的数据,进行如下操作即可得到滤波后像素值。
对于均值滤波器这类的线性平滑滤波器,在FPGA实现上与gauss滤波器很类似,也可用这种滑窗方式实现。
猜你喜欢
- 2024-11-06 基于MATLAB的刀具角度测量 matlab测工件尺寸
- 2024-11-06 「三十一」MATLAB图像变换之傅里叶变换
- 2024-11-06 「三十三」MATLAB图像变换之Radon变换(R变换)——投影重建图像
- 2024-11-06 「MATLAB数据导入与分析」MATLAB: 使用内存映射加快文件读写
- 2024-11-06 利用边缘检测计算物体面积(内含源码)
- 2024-11-06 自动驾驶毫米波雷达物体检测技术-算法
- 2024-11-06 基于粒子滤波器的电池剩余使用寿命计算matlab仿真
- 2024-11-06 「二十」MATLAB图像处理之六 matlab怎么做图像处理
- 2024-11-06 matlab程序, 脉冲波合成与提取,滑冲效应、方向性效应
- 2024-11-06 《基于PLE结合卡尔曼滤波的RSSI定位算法matlab仿真》基于PLE
你 发表评论:
欢迎- 最近发表
-
- PPT中动作连贯的卡通人物,我集齐了100套
- 成都13岁女孩手绘逐帧动画走红 网友:这是天赋型选手
- Android主流UI开源库整理(android完整开源项目)
- 达芬奇更新啦!DaVinci Resolve Studio 20.0.1
- LM Studio-本地安装大模型 | OpenAI API 文字转语音本地运行程序分享
- lululemon律动快闪 多色系呈现夏季活力
- [AOA][分享]160503 智珉和偶吧玩起电影游戏 用一件衣服找回悸动
- Visual Studio 2022:一个功能全面且强大的IDE
- 纽约布什维克区艺术家工作室开放即将举行
- 从 CANopen到 PROFINET:网关助力物流中心实现复杂的自动化升级
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)