虽然matlab里面有这些函数,但是要求自己编写,计算机视觉上有这个实验,是别人编写的。别人到网上找了半天才零散的找到一些碎片,整理以后发上来的!

MatLab自编的均值滤波、中值滤波、高斯滤波 图像处理函数。

%自编的均值滤波函数。x是需要滤波的图像,n是模板大小(即n×n)

function d=avefilt(x,n)

a(1:n,1:n)=1;   %a即n×n模板,元素全是1

p=size(x);   %输入图像是p×q的,且p>n,q>n

x1=double(x);

x2=x1;

%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素

for i=1:p(1)-n+1

for j=1:p(2)-n+1

c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘

s=sum(sum(c));                 %求c矩阵(即模板)中各元素之和

x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将模板各元素的均值赋给模板中心位置的元素

end

end

%未被赋值的元素取原值

d=uint8(x2);

%自编的中值滤波函数。x是需要滤波的图像,n是模板大小(即n×n)

function d=midfilt(x,n)

p=size(x);   %输入图像是p×q的,且p>n,q>n

x1=double(x);

x2=x1;

for i=1:p(1)-n+1

for j=1:p(2)-n+1

c=x1(i:i+(n-1),j:j+(n-1)); %取出x1中从(i,j)开始的n行n列元素,即模板(n×n的)

e=c(1,:);      %是c矩阵的第一行

for u=2:n

e=[e,c(u,:)];     %将c矩阵变为一个行矩阵

end

mm=median(e);      %mm是中值

x2(i+(n-1)/2,j+(n-1)/2)=mm;   %将模板各元素的中值赋给模板中心位置的元素

end

end

%未被赋值的元素取原值

d=uint8(x2);

%自编的高斯滤波函数,S是需要滤波的图象,n是均值,k是方差

function d=gaussfilt(k,n,s)

Img = double(s);

n1=floor((n+1)/2);%计算图象中心

for i=1:n

for j=1:n

b(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*k))/(4*pi*k);

end

end

%生成高斯序列b。

Img1=conv2(Img,b,'same'); %用生成的高斯序列卷积运算,进行高斯滤波

d=uint8(Img1);

%此为程序主文件,包含主要功能单元,以及对子函数进行调用try

%实验步骤一:彩色、灰度变换

h=imread('photo.jpg'); %读入彩×××片

c=rgb2gray(h); %把彩×××片转化成灰度图片,256级

figure,imshow(c),title('原始图象'); %显示原始图象

g=imnoise(c,'gaussian',0.1,0.002); %加入高斯噪声

figure,imshow(g),title('加入高斯噪声之后的图象'); %显示加入高斯噪声之后的图象

%实验步骤二:用系统预定义滤波器进行均值滤波

n=input('请输入均值滤波器模板大小\n');

A=fspecial('average',n); %生成系统预定义的3X3滤波器

Y=filter2(A,g)/255;           %用生成的滤波器进行滤波,并归一化

figure,imshow(Y),title('用系统函数进行均值滤波后的结果'); %显示滤波后的图象

%实验步骤三:用自己的编写的函数进行均值滤波

Y2=avefilt(g,n);     %调用自编函数进行均值滤波,n为模板大小

figure,imshow(Y2),title('用自己的编写的函数进行均值滤波之后的结果'); %显示滤波后的图象

%实验步骤四:用Matlab系统函数进行中值滤波

n2=input('请输入中值滤波的模板的大小\n');

Y3=medfilt2(g,[n2 n2]);   %调用系统函数进行中值滤波,n2为模板大小

figure,imshow(Y3),title('用Matlab系统函数进行中值滤波之后的结果'); %显示滤波后的图象

%实验步骤五:用自己的编写的函数进行中值滤波

Y4=midfilt(g,n2);      %调用自己编写的函数进行中值滤波,

figure,imshow(Y4),title('用自己编写的函数进行中值滤波之后的结果');

%实验步骤六:用matlab系统函数进行高斯滤波

n3=input('请输入高斯滤波器的均值\n');

k=input('请输入高斯滤波器的方差\n');

A2=fspecial('gaussian',k,n3);      %生成高斯序列

Y5=filter2(A2,g)/255;              %用生成的高斯序列进行滤波

figure,imshow(Y5),title('用Matlab函数进行高斯滤波之后的结果');    %显示滤波后的图象

%实验步骤七:用自己编写的函数进行高斯滤波

Y6=gaussfilt(n3,k,g); %调用自己编写的函数进行高斯滤波,n3为均值,k为方差

figure,imshow(Y6),title('用自编函数进行高斯滤波之后的结果');      %显示滤波后的图象

catch           %捕获异常

disp(lasterr);     %如果程序有异常,输出

end

matlab调和均值滤波_MatLab 自编的 均值滤波、中值滤波、高斯滤波 图像处理函数...相关推荐

  1. 图像滤波算法整理--均值、中值、高斯、拉普拉斯算子、梯度算子:

    首先分为平滑空间滤波器和锐化空间滤波器来进行介绍.平滑空间滤波器主要用于模糊处理和降低噪声,主要两类:均值滤波器和中值滤波器.锐化空间滤波器主要是:拉普拉斯算子和梯度算子. 一.均值滤波方法:对高斯噪 ...

  2. 图像处理:推导五种滤波算法(均值、中值、高斯、双边、引导)

    目录 概论 算法原理 1.均值滤波 2.中值滤波 3.高斯滤波 4.双边滤波 5.引导滤波 手写代码 Opencv代码实现 最后的总结 参考文章 概论 本来打算是分开推导的,但我觉得还是整个合集吧,避 ...

  3. 点云去噪(中值、高斯、均值、SOR滤波),及matlab的代码撰写-2021-7-21-

    1 为什么点云会有噪声? 受到仪器.周围环境.被扫描目标本身的特性影响,点云数据中无法避免存在一些噪声.噪声的来源有很多,比如超过扫描设定范围的点:由于受到周围的风.周围物体的震动等影响产生的点:或者 ...

  4. OpenCV函数简记_第三章数字图像的滤波处理(方框,均值,高斯,中值和双边滤波)

    系列文章目录 OpenCV函数简记_第一章数字图像的基本概念(邻域,连通,色彩空间) OpenCV函数简记_第二章数字图像的基本操作(图像读写,图像像素获取,图像ROI获取,图像混合,图形绘制) Op ...

  5. 【概率论】4-5:均值和中值(The Mean and the Median)

    原文地址1:https://www.face2ai.com/Math-Probability-4-5-The-Mean-and-the-Median转载请标明出处 Abstract: 本文介绍均值和中 ...

  6. OpenCV(十一)图像滤波(平滑处理)(平均、中值、高斯、双边滤波)

    目录 一.基础理论 1.图像噪声 1-1.椒盐噪声 1-2.高斯噪声 2.滤波 3.线性滤波 1.概述 2.线性滤波原理: 二.均值滤波(cv::blur())(简单滤波) 1.原理 2.API 三. ...

  7. 手把手教你用Python求均值、中值和众数

    导读:数据科学入门:集中趋势度量--均值.中值和众数. 作者:保罗·戴特尔(Paul Deitel).哈维·戴特尔(Harvey Deitel) 来源:大数据DT(ID:hzdashuju) 本文我们 ...

  8. 图像局部均值、中值、方差求取结合opencv

    结合opencv求取图像的局部均值.中值.方差: //src 为待处理图像 //indexrows 为图像遍历的行数 //indexcols 为图像遍历的列数 //meanv 保存均值 //ker 窗 ...

  9. 【opencv】(3) 图像滤波:均值、方框、中值、高斯

    内容有: 均值滤波 cv2.blur(),方框滤波 cv2.boxFilter(),高斯滤波 cv2.GaussianBlur(),中值滤波 cv2.medianBlur() 滤波可理解为,平均卷积操 ...

  10. CV10 图像模糊(均值、高斯、中值、双边滤波)

    通过将图像与低通滤波器内核进行2D卷积来实现图像模糊.这对于消除噪音很有用.它实际上从图像中消除了高频部分(例如噪声,边缘).因此,在此操作中边缘有些模糊.(有一些模糊技术也可以不模糊边缘).Open ...

最新文章

  1. c/s开发基础自学纪录为主
  2. Silverlight入门系列]使用MVVM模式(1):MVVM核心概念
  3. hdu_2063,二分图最大匹配的学习
  4. hessian矩阵与鞍点关系浅析
  5. 打车业务下单高并发解决方案
  6. arm ubuntu 编译boost_使用yocto工具编译qt5.9.6总结
  7. win10怎么激活python_无法在Windows 10中激活Python venv
  8. python调试利器pysnooper
  9. JAVA基础----简答
  10. mysql安装 linux rpm_linux MySQL5.7 rpm安装
  11. 解决mescroll固定位置上拉加载无效果?真的只需一步
  12. MAC中安装Navicat Premium
  13. 锐捷云教室 服务器型号,锐捷智慧云课堂方案(云教室+简单)优秀课件
  14. 【汇编作业记录Proteus8+keil5 作业 2】
  15. 简单实现 Android 闹钟
  16. 测试iphone4电池的软件,iphone4电池容量 iphone4电池的更换【图文】
  17. 八、在创业公司工作的心理历程
  18. Spark SQL原理及常用方法详解(二)
  19. 荣耀折叠旗舰Magic Vs系列;卡西欧搭配可拆卸表圈的G-SHOCK新品;联发科天玑8200 5G移动芯片 | 科技新品...
  20. 详解生物地理学优化(BBO)算法(一)

热门文章

  1. c++ opencv数字图像处理:频率域滤波--同态滤波
  2. 计算机网络第七版 第四章课后答案
  3. mysql字符串拼接有空值_MySQL字符串拼接
  4. 基于边缘AI计算的人员入侵检测CNN算法在实际场景中的应用
  5. Java---遍历Map集合的三种方式
  6. AIML框架标签详解
  7. Matlab中MatPower模块的安装流程
  8. linux多线程 进程休眠,转载:Linux多线程之线程休眠
  9. [密码学]如何生成PKCS8密钥
  10. 工具类官网Web原型制作分享-Adobe