1、运用交互式的设计方法,把直方图-Cameraman试验 及拉普拉斯滤波器图像增强试验结合一块组成一个MATLAB图像处理系统小系统,两个试验分别在test1.m 和test2.m文件中,总的系统调用在program.m文件中。为了好对比,每一个试验的如果都以subplot()的方式,共同显示在窗体中。如下图在对于test2.m里的拉普拉斯滤波器图像增强试验 采用交互的方法自主输入不同的奇数方阵 还加入了数值类型判别异常冗错功能。
2、对于直方图-Cameraman试验的主程序设计%注意婊剧琏兄%K = im2gray(K);%H=histeq(K);%histeq处理gray图像clear;close all;锾攒揉敫a=imread('Cameraman.jpg'); %读取图像至工作空间 subplot(3,3,1);imshow(a);title('Cameraman');b=rgb2gray(a); %RGB转换为灰度图像subplot(3,3,2);imshow(b); %显示图像title('实验1 灰度图像');subplot(3,3,3);imhist(b);%imshow(j);title('实验2 灰度直方图');J=imadjust(b,[0.3,0.7],[0,1],1);subplot(3,3,4),imshow(J);title(' 实验3 用 g(m,n)=a’+(b’-a’)* f(m,n) /(b-a)进行变换 ');subplot(3,3,5);g=im2bw(a,0.7);imshow(g);title(' 实验4 图像二值化');subplot(3,3,6);w=histeq(b);%K = im2gray(K);%H=histeq(K);%histeq处理gray图像imhist(w);title(' 实验5 利用直方图均衡化进行图像增强');而后保存为test1.m如下图:
3、拉普拉斯滤波器图像增强试验的主程序设计f1=imread('moon.tif');subplot(2,2,1);w1=fspecial('l锾攒揉敫aplacian',0);w0=[1 1 1;1 -8 1;1 1 1];f1=im2double(f1);g1=f1-imfilter(f1,w1,'replicate');imshow(f1);title('原图像');subplot(2,2,2);g2=f1-imfilter(f1,w0,'replicate');imshow(g2);title('3*3中心为-8的拉普拉斯滤波器增强的图像');while 1n=input('请输入一个奇数 例n=5, 9, 15, 25\n n=');tryif rem(n,2)==0assert();endA=ones(n);m=(n+1)/2;n1=n^2;n1=1-n1;disp('你输入的数对应的中心值是:');disp(n1);A(m,m)=n1;g3=f1-imfilter(f1,A,'replicate');subplot(2,2,3);imshow(g3);title('对比测试图像');catchdisp('你输入的不是奇数');ends=input('是否结束拉普拉斯滤波器图像增强对比试验\n y代表结束返回主菜单 n代表继续试验 例:n=y or n\n n=','s');if s=='y'disp('结束拉普拉斯滤波器图像增强对比试验,返回主菜单');break;end %ifend %while而后保存为test2.m如下图:
4、对于拉普拉斯滤波器图像增强试验,为了解决在n=input('请输入一个奇数例n=5, 9,15, 25\n n=');语句执行中,用户输入的不是奇数,想到了用MATLAB中的异常机制,try catch end 其中为了让不是奇数自行抛出异常而被 catch捕获而执行catch中的语句我想到了用一个if end 来自行执行assert();抛出异常因为assert()不是MATLAB中的语言所以一定会抛出错误这样就可以变向的达到自抛出异常的作用了if rem(n,2)==0assert();end 如果不是奇数就执行 assert 函数,catch收到异常就进行冗错
5、交互式的主程序里,主要运用一个switch拳婊招稹语句来处理用户的不同输入 ,主程序program.m如下%%%%%%%%%%%%%鬈熵痼霄%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%运用交互式的设计方法,把直方图-Cameraman试验 及拉普拉斯滤波器图像增强试验结合%一块组成一个MATLAB图像处理系统小系统,两个试验分别在test1.m 和test2.m文件%中,总的系统调用在program.m文件中。%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%disp('………………………………欢迎使用MATLAB图像处理系统………………………………');disp('使用说明:请输入一个数字进行选择 0 代表:直方图-Cameraman试验 ');disp('1代表:拉普拉斯滤波器图像增强试验 例num=0,1 ');disp('Designed by wangxiaobo王晓博 email:[email protected]');while 1num=input('请输入一个数字进行选择例num=0, 1\n num=');switch numcase 0disp('直方图-Cameraman试验');test1();case 1disp('拉普拉斯滤波器图像增强试验');test2();otherwiseends=input('是否结束MATLAB图像处理系统使用\n n=y or n\n n=','s');if s=='y'disp('谢谢使用');exit;break;enddisp('………………………………主菜单………………………………\n');end
6、两个试验分别在test1.m 和test2.m文件中,总的系统调用在program.m文件中。使用方法:第一步在command windows 里输入program 运行这个文件。(源代码要放到MATLAB的work工作目录中,以待运行路径搜索)命令窗口如下图所示
7、使用说明:输入一个数字进行选择0 代表:直方图-Cameraman试验1代表:普拉斯滤波器图像增强试验所以上图输入的是0直方图-Cameraman试验运行,结果如下图:
8、第二步 命令窗体现在显示的是是否结束MATLAB图像处理系统使用n=yor nn=就是说如果选择y就结束程序的运行,如选择n则继续。回到主菜单。我可以选择0 代表:直方图-Cameraman试验1代表:普拉斯滤波器图像增强试验 ,这次选择 1提示如下图:
9、进行拉普拉斯滤波器图像增强试验,要我们选择滤波的矩阵是多大的,我们可以选5输出中心值是-24,增强效果如下图:
10、命令窗口提示我们是不是要结束拉普拉斯滤波器图像增强试验 我们选n代表不结束,继续试验,如下图命令窗口,
11、输入9后的图像效果如下图:
12、我们可以接着上面的样子,输入15,25,23,33,等分别以25 和33分效果展示如下图25 33.
13、结束试验可以选择y代表 想结束,返回到主菜单 再选择y 退出matlab程序运行。