matlab平滑滤波和中值滤波程序

glRasterPos2i(100,100); //定位当前光标

glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'H'); //写字符"H"

glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'e'); //写字符"e"

glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'l'); //写字符"l"

glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'l'); //写字符"l"

glutBitmapCharacter(GLUT_BITMAP_9_BY_15,'o'); 写字符"o"

你好,能否指导一下中值滤波在程序中如何实现?

nf=imfinfo('lena.bmp')

figure,imshow(I)

X=grayslice(I,64);

imshow(X,pink(64))

load trees

figure,image(10,10,X)

imwrite(X,map,'trees.bmp');

imfinfo('trees.bmp')

figure,imshow(X,map)

BW=im2bw(X,map,0.6);

figure,imshow(BW)

I=imread('lena.bmp');

inf=imfinfo('lena.bmp')

figure,imshow(I)

X=grayslice(I,64);

figure,imshow(X,pink(64))

A=imread('lena.bmp');

imshow(A)

B=fftshift(fft2(A));

figure;

imshow(log(abs(B)),[8,10])

clc;

clear all;

I=imread('lena.tif');

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% %用中值滤波,多维滤波,使用中心为-4,-8的拉普

% %拉斯滤波器,高斯低通滤波,拉普拉斯滤波器进行滤波处理

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure;%figure1

subplot(2,2,1);

imshow(I);

title('原始图像');

J=imnoise(I,'salt & pepper',0.04);%加椒盐噪声

title('加椒盐噪声');

subplot(2,2,2);

imshow(J);

K=medfilt2(J,[4,4])%进行中值滤波;

subplot(2,2,3);

imshow(K);

title('进行中值滤波');

h=ones(3,3)/9;%多维滤波

w=h;

g=imfilter(I,w,'conv','replicate')

subplot(2,2,4);

imshow(g);

title('多维滤波');

%使用中心为-4,-8的拉普拉斯滤波器,

w4=[1 1 1;

1 -4 1;

1 1 1];

w8=[1 1 1;

1 -8 1;

1 1 1];

f=im2double(I);

g4=f-imfilter(f,w4,'replicate');

g8=f-imfilter(f,w8,'replicate');

imshow(f);

figure;%figure2

subplot(1,2,1);

imshow(g4);

title('中心为-4的拉普拉斯滤波');

subplot(1,2,2);

imshow(g8);

title('中心为-8的拉普拉斯滤波');

h3=fspecial('gaussian',[3,3],0.5);%高斯低通滤波

figure;%figure3

B4=filter2(h3,I);

subplot(1,2,1);

imshow(B4,[ ]);

title('高斯低通滤波');

h4=fspecial('laplacian',0);%使用拉普拉斯滤波器

B5=filter2(h4,I);

subplot(1,2,2);

imshow(B5,[ ]);

title('拉普拉斯滤波器');

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% %从空域的角度进行亮度变换

% %把灰度等级是10-100的变化到10-255

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure;%figure4

subplot(2,2,1);

imshow(I);

title('原始图像');

J2=imadjust(I,[],[],0.5);% 增强低灰度级

subplot(2,2,2);

imshow(J2);

title('增强低灰度级');

J3=imadjust(I,[ ],[ ],2);%增强高灰度级

subplot(2,2,3);

imshow(J3);

title('增强高灰度级');

a1=100/255;%把灰度等级是10-100的变化到10-255

a2=255/255;

a3=10/255;

J2=imadjust(I,[a3,a1],[a3,a2],[]);

subplot(2,2,4);

imshow(J2);

title('把灰度等级是10-100的变化到10-255');

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% %从频域的角度进行亮度变换

% %fft2

% %由于能量主要集中在低频部分

% %所以对低频进行处理可以得到理想的效果

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

I=imread('lena.tif');

up=0.5;%设置处理频率上限

down=0.09%%设置处理频率下限

figure;%figure5

subplot(421);

imshow(I);

title('原始图像');

f=double(I);

subplot(4,2,3);

imshow(log(abs(f)),[]);

title('unit8转化为double');

g=fft2(f);

g=fftshift(g);

subplot(4,2,5);

imshow(log(abs(g)),[]);

title('FFT2变化后的图像');

[M,N]=size(g);% 转换数据矩阵

y1=max(max(abs(g)));%求出最大频率

y2=min(min(abs(g)));%%求出最小频率

y3=(y1-y2)*up+y2;%设置滤波上限

y4=(y1-y2)*down+y2;%%设置滤波下限

for i=1:M

for j=1:N

if (abs(g(i,j))g(i,j)=g(i,j)^1.1;%对低频部分进行灰度增强

end

end

end

result=ifftshift(g);

J2=ifft2(result);

J3=uint8(abs(J2));

subplot(427);

imshow(J3,[ ]);

title('频域处理后的图像');

subplot(422)

imhist(I,64);

subplot(424)

imhist(f,64);

subplot(426)

imhist(g,64);

subplot(428)

imhist(J3,64);

基于小波分析和中值滤波?图像处理?matlab程序

程序是下面这样,但只能处理长宽一样的方形图像,灰度和彩色图像都可,要用其他图像只需把Lena.bmp改为其他图像,但图像要保存在m文件所在路径下。下面还有一个运行后的图像(之一),希望能对你有所帮助。

clear;clc;

%%%%%%%%%%测试图像只能是方形图像,长宽像素一样。

f=imread('Lena.bmp');%%读取图像数据,图像只能保存在m文件所在的路径下

d=size(f);

if length(d)>2

f=rgb2gray((f));%%%%%%%%如果是彩色图像则转化为灰度图

end

T=d(1);

SUB_T=T/2;

% 2.进行二维小波分解

l=wfilters('db10','l'); % db10(消失矩为10)低通分解滤波器冲击响应(长度为20)

L=T-length(l);

l_zeros=[l,zeros(1,L)]; % 矩阵行数与输入图像一致,为2的整数幂

h=wfilters('db10','h'); % db10(消失矩为10)高通分解滤波器冲击响应(长度为20)

h_zeros=[h,zeros(1,L)]; % 矩阵行数与输入图像一致,为2的整数幂

for i=1:T; % 列变换

row(1:SUB_T,i)=dyaddown( ifft( fft(l_zeros).*fft(f(:,i)') ) ).'; % 圆周卷积FFT

row(SUB_T+1:T,i)=dyaddown( ifft( fft(h_zeros).*fft(f(:,i)') ) ).'; % 圆周卷积FFT

end;

for j=1:T; % 行变换

line(j,1:SUB_T)=dyaddown( ifft( fft(l_zeros).*fft(row(j,:)) ) ); % 圆周卷积FFT

line(j,SUB_T+1:T)=dyaddown( ifft( fft(h_zeros).*fft(row(j,:)) ) ); % 圆周卷积FFT

end;

decompose_pic=line; % 分解矩阵

% 图像分为四块

lt_pic=decompose_pic(1:SUB_T,1:SUB_T); % 在矩阵左上方为低频分量--fi(x)*fi(y)

rt_pic=decompose_pic(1:SUB_T,SUB_T+1:T); % 矩阵右上为--fi(x)*psi(y)

lb_pic=decompose_pic(SUB_T+1:T,1:SUB_T); % 矩阵左下为--psi(x)*fi(y)

rb_pic=decompose_pic(SUB_T+1:T,SUB_T+1:T); % 右下方为高频分量--psi(x)*psi(y)

% 3.分解结果显示

figure(1);

subplot(2,1,1);

imshow(f,[]); % 原始图像

title('original pic');

subplot(2,1,2);

image(abs(decompose_pic)); % 分解后图像

title('decomposed pic');

figure(2);

% colormap(map);

subplot(2,2,1);

imshow(abs(lt_pic),[]); % 左上方为低频分量--fi(x)*fi(y)

title('\Phi(x)*\Phi(y)');

subplot(2,2,2);

imshow(abs(rt_pic),[]); % 矩阵右上为--fi(x)*psi(y)

title('\Phi(x)*\Psi(y)');

subplot(2,2,3);

imshow(abs(lb_pic),[]); % 矩阵左下为--psi(x)*fi(y)

title('\Psi(x)*\Phi(y)');

subplot(2,2,4);

imshow(abs(rb_pic),[]); % 右下方为高频分量--psi(x)*psi(y)

title('\Psi(x)*\Psi(y)');

% 5.重构源图像及结果显示

% construct_pic=decompose_matrix'*decompose_pic*decompose_matrix;

l_re=l_zeros(end:-1:1); % 重构低通滤波

l_r=circshift(l_re',1)'; % 位置调整

h_re=h_zeros(end:-1:1); % 重构高通滤波

h_r=circshift(h_re',1)'; % 位置调整

top_pic=[lt_pic,rt_pic]; % 图像上半部分

t=0;

for i=1:T; % 行插值低频

if (mod(i,2)==0)

topll(i,:)=top_pic(t,:); % 偶数行保持

else

t=t+1;

topll(i,:)=zeros(1,T); % 奇数行为零

end

end;

for i=1:T; % 列变换

topcl_re(:,i)=ifft( fft(l_r).*fft(topll(:,i)') )'; % 圆周卷积FFT

end;

bottom_pic=[lb_pic,rb_pic]; % 图像下半部分

t=0;

for i=1:T; % 行插值高频

if (mod(i,2)==0)

bottomlh(i,:)=bottom_pic(t,:); % 偶数行保持

else

bottomlh(i,:)=zeros(1,T); % 奇数行为零

t=t+1;

end

end

这个只是一级分解,matlab自带的函数可以实现多级分解,级数由编程者自己确定。

是的,是一样的。

matlab实现中值滤波程序,中值滤波流程(matlab平滑滤波和中值滤波程序)相关推荐

  1. 微信小程序支付的整个流程和在这个过程中遇到的问题

    前言:这几天公司要做微信的支付功能,花了一天时间写了一个dome,单文档上有太多的坑,有些地方写的不清不楚,所以写了这个文档记录一下过程. 环境 一.后台:微信的sdk <!--微信支付SDK- ...

  2. 【图像去噪】基于matlab GUI butterworth+中值+维纳+小波图像去噪【含Matlab源码 520期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像去噪]基于matlab GUI butterworth+中值+维纳+小波图像去噪[含Matlab源码 520期] 获取代码方式2: ...

  3. C语言 编写程序:请将Fibonacci数列前30项中的偶数值找出来,存储到一维数组中。其中,Fibonacci数列如下:1,1,2,3,5,8,13,21,34...该数列除前两项之外,其他任意

    编写程序:请将Fibonacci数列前30项中的偶数值找出来,存储到一维数组中.其中,Fibonacci数列如下:1,1,2,3,5,8,13,21,34-该数列除前两项之外,其他任意一项都是相邻的前 ...

  4. 编写Java程序,从键盘输入一个正整数n(n≥2),随机生成一个n阶方阵,每个元素均为整数,其取值范围为[100,999]。然后输出该方阵元素中的最大值和最小值。

    编写Java程序,从键盘输入一个正整数n(n≥2),随机生成一个n阶方阵,每个元素均为整数,其取值范围为[100,999].然后输出该方阵元素中的最大值和最小值. ```java package Ja ...

  5. matlab中if语句多个_科学计算 | MATLAB程序设计基础

    点击"蓝字"关注我们 科学计算 | MATLAB程序设计基础 引言 在前面的学习中,我们都是在命令行窗口逐条输入命令,然后由matlab解释执行,这种交互式的命令执行方式,操作简单 ...

  6. matlab 有一函数 _写一程序_输入自变量的值_输出函数值.,第2讲 MATLAB入门1_数学建模_ppt_大学课件预览_高等教育资讯网...

    数学建模与数学实验 MATLAB入门数学建模及其基于 MATLAB的实现辽宁工程技术大学理学院应用数学系 MATLAB作为线性系统的一种分析和仿真工具,是理工科大学生应该掌握的技术工具,它作为一种编程 ...

  7. python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)

    前言 之前在实际的项目研发中,需要对一些复杂的json数据进行取值操作,由于json数据的层级很深,所以经常取值的代码会变成类似这样: value = data['store']['book'][0] ...

  8. IDEA中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除

    问题描述: 运行Java Web项目时,IDEA中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除 解决方法: 1. 打开[File]-[Project Structur ...

  9. java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...

    [单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...

  10. java中注解动态传参_SpringMVC之注解、传参、返回值及拦截器

    1. 注解式开发之annotation-driven解释 (1) mvc注解驱动在哪个文件中配置? Springmvc.xml (2) 配置mvc注解驱动使用哪个标签? 2. 注解式开发之视图解析器 ...

最新文章

  1. 4.2 路由算法与路由协议概述
  2. yii2-wx / 微信二维码接口
  3. error C1004 发现意外的文件尾
  4. Flink or Spark?实时计算框架在K12场景的应用实践
  5. 【转】关于eclipse和javac编译结果不一致的问题的分析与解决
  6. 惠普再“卖身”,软件业务卖给了这家鼻祖级公司
  7. ODI配置Mysql5.1数据库服务器
  8. 超级干货!31 条2020 年最新版 ZooKeeper面试题,先收藏再看!| 博文精选
  9. regrex pattern
  10. redis客户端下载(windos版本)
  11. 变频器基础:变频器工作原理与常用功能
  12. 南开100题c语言计算机二级,3月计算机二级C语言题库南开100题.pdf
  13. qpython3l_qpython3例子
  14. iOS-成为或取消第一响应者
  15. 第二章 工厂设计模式
  16. 小福利,用python打造自己的图书管理系统
  17. indexedDB(三)查询(详细)篇
  18. Java处理小数点精度
  19. 2020上半年主要国产OA厂商业绩
  20. YOLOv7改进之二十二:涨点神器——引入递归门控卷积(gnConv)

热门文章

  1. 没了“百草味”的好想你:生命不止,画饼不息
  2. TensorFlow 学习(六)时尚(衣服、鞋、包等) Fashion MNIST识别
  3. python根据身份证前17位数计算第18位数
  4. Postgresql学习笔记之——数据类型之字符串类型
  5. office365更新失败解决
  6. C语言学习:剪切板UNICODE码使用
  7. MDA165-16美高森美同款ASEMI原装品质
  8. ftp获取远程服务器的文件,ftp查看远程服务器文件
  9. 实现一款简单的RPG游戏
  10. Steam项目推进(三)—— 改造战斗原型