matlab高斯滤波器
来源:互联网 发布:珠海金控 知乎 编辑:程序博客网 时间:2024/05/13 19:11
1、使用matlab自带的函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;img = imread('lena.tif');w = fspecial('gaussian',[5,5],1);%replicate:图像大小通过赋值外边界的值来扩展%symmetric 图像大小通过沿自身的边界进行镜像映射扩展I11 = imfilter(img,w,'replicate');figure(1);imshow(img);title('原图像');figure(2);imshow(I11);title('matlab高斯滤波后的图像');
结果:可以看到帽子和头发都非常显著的平滑了
2、自己编写的高斯滤波函数
%own gaussian function I = imread('lena.tif');I = double(I);%convert unit8 to double myimg = I;[rows, cols] = size(I);size = 5;conv = zeros(size,size);%高斯核segma = 1;sum = 0;center = 3;for i=1:sizefor j=1:size%%利用高斯函数计算模板的各个参数temp = exp ( -((i-center)*(i-center) + (j-center)*(j-center)) / 2*segma*segma );conv(i,j) = temp / (2*3.14*segma*segma);sum =sum + conv(i,j);endendconv = conv ./ sum;disp('kernel');display(conv);%use gaussian kernel to smooth imagefor k=1:rowsfor m= 1:cols sum =0;%%卷积:模板与图像对应部分相乘再累加for i=1:sizefor j=1:sizeif( ( (k-center+i) > 0 && (k-center+i) <= rows ) && ((m-center+j)>0 && (m-center+j)<=cols) )sum = sum + conv(i,j) * I(k-center+i, m-center+j);endendend%%替换掉原像素myimg(k,m) = sum;endendfigure(3);imshow(myimg,[]);title('Gaussion Image');
结论:使用自己编写的滤波,虽然也起到了平滑效果,但是图像亮度偏高些,还不知道原因,希望大神指点指点。
阅读全文
0 0
- matlab高斯滤波器
- matlab 图像处理--高斯滤波器
- 高斯混合概率假设密度滤波器 matlab代码实现
- Matlab 高斯_拉普拉斯滤波器处理医学图像
- 高斯滤波器
- 高斯滤波器
- 高斯滤波器
- 高斯滤波器
- 高斯滤波器
- 高斯滤波器
- 高斯滤波器
- 高斯滤波器
- 高斯平滑滤波器
- 高斯滤波器理解
- 高斯滤波器
- 高斯滤波器
- 高斯滤波器
- 递归高斯滤波器
- ssm 文件上传、下载
- Struts-2.0 标签笔记
- CSS 2017-07-26
- 十六进制字符串转二进制 --- OC 实现
- 三菱PLC编程语言的特点
- matlab高斯滤波器
- A
- Java多线程面试50题
- 课时9 磁盘基本概念(磁盘、分区、MBR与GPT)
- linux cgroup 学习的一些总结
- Android Activity笔记
- linux centos7下php7安装redis扩展
- Service Intent must be explicit
- AndroidStudio 3.0 canary 8 Annotation processors must be explicitly declared now.