关于matlab
matlab基本概况
MATLAB是矩阵实验室(Matrix Laboratory)意思。除具有优异的数值计算能力外,还提供专业的符号计算、文字处理、可视化建模仿真、实时控制等功能。
MATLAB基本数据单位是矩阵,其指令表达式与数学非常相似,因此在工程中使用MATLAB比用来解决问题C,FORTRAN语言完成后,同样的事情要简单得多.
当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和30多个工具包(Toolbox).工具包可分为功能工具包和学科工具包.用于扩展的功能工具MATLAB符号计算、可视化建模仿真、文本处理及实时控制等功能.学科工具包是专业性强的工具包,控制工具包,信号处理工具包、通信工具包等都属于这类.
开放性使MATLAB广受用户欢迎.除内部函数外,一切MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过修改源程序或添加自己的编写程序构建新的特殊工具包.
学习任务
- 使用matlab平衡四张图片,分别显示原始图像、平衡后图像和相应的直方图
- 使用matlab图像添加强度为0.2.椒盐噪声,分别使用3x3.平均过滤器、高斯平滑过滤器和中间过滤器平滑过滤添加噪声的图像,显示原始图像、添加噪声的图像和平滑过滤后的图像
- 拉普拉斯滤波器分别使用:
锐化图像
实现
- 使用matlab平衡四张图片,分别显示原始图像、平衡后图像和相应的直方图
% 直方图均衡 H1= imread('Fig0316_1_3e.tif'); H2= imread('Fig0316_2_3e.tif'); H3= imread('Fig0316_3_3e.tif'); H4= imread('Fig0316_4_3e.tif'); % H1 if length(size(H1))>2 H1=rgb2gray(H1); end subplot(3,2,1); imshow(H1); title('H1原图'); subplot(3,2,2); imhist(H1); title('H原图直方图; subplot(3,2,5); H1_=histeq(H1); imshow(H1_'); title('histeq均衡后图 '); subplot(3,2,6); imhist(H1_'); title('histeq平衡后直方图 ') % H2 if length(size(H2))>2 H2=rgb2gray(H2); end subplot(3,2,1); imshow(H2); title('H2原图'); subplot(3,2,2); imhist(H2); title('H直方图2); subplot(3,2,5); H2_=histeq(H2); imshow(H2_); title('histeq均衡后图 '); subplot(3,2,6); imhist(H2_); title('histeq均衡后直方图') %H3 if length(size(H3))>2 H3=rgb2gray(H3); end subplot(3,2,1); imshow(H3); title('H3原图'); subplot(3,2,2); imhist(H3); title('H3原图直方图; subplot(3,2,5); H3_=histeq(H3); imshow(H3_); title('histeq均衡后图 '); subplot(3,2,6); imhist(H3_); title('histeq均衡后直方图') % H4 if length(size(H4))>2 H=rgb2gray(H4); end subplot(3,2,1); imshow(H4); title('H4原图'); subplot(3,2,2); imhist(H4); title('H四原图直方图; subplot(3,2,5); H4_=histeq(H4); imshow(H4_); title('histeq平衡后图'); subplot(3,2,6); imhist(H4_); title('histeq均衡后直方图')
-
H1
-
H2
-
H3
-
H4 我们发现,在我们平衡图像后,直方图的灰度范围(跨度)变得更大,图像效果变得更加明显,因此我们可以得出结论:
- 使用matlab图像添加强度为0.2.椒盐噪声,分别使用3x3.平均过滤器、高斯平滑过滤器和中间过滤器平滑过滤添加噪声的图像,显示原始图像、添加噪声的图像和平滑过滤后的图像
% 添加噪声 t=imread('Fig0507_ckt_board_orig_3e.tif'); subplot(1,2,1),imshow(t),title(原图); t2=imnoise(t,'salt & pepper',0.2); figure,subplot(1,2,1),imshow(t2),title加噪声密度:0.二、椒盐噪声; % 3x3均值滤波 k1=filter2(fspecial('average',3),t2); subplot(2,3,3),imshow(uint8(k1));title(均值滤波3*平滑3模板 % 高斯滤波 M = size(t2); if numel(M)>2 gray = rgb2gray(t2); else gray = t2; end % 创建滤波器 W = fspecial('gaussian',[5,5],1); G = imfilter(gray, W, 'replicate'); figure(1); subplot(121); imshow(gray); title(原始图像); subplot(122); imshow(G); title(过滤后图像); % 中值滤波 subplot(2,2,4) D=medfilt3(t2); imshow(D,[]) title(中值滤波处理) imshow(t),title(原图); imshow(t2),title('添加0.二、椒盐噪声; imshow(k1),title('3x3.均值滤波; imshow(uint8(k1)),title('3x3.均值滤波; imshow(G),title(高斯滤波); imhow(D),title('中值滤波');
-
原图
-
添加强度为0.2的椒盐噪声
-
3x3均值滤波
-
高斯滤波
-
中值滤波
从结果可以看出,
- 使用拉普拉斯滤波器对图像进行锐化
- 四邻域的拉普拉斯算子滤波
A = imread('blurry_moon_3e.tif');
%%%锐化%%%%
f_laplacian = fspecial('laplacian',0)
B3 = imfilter(A,f_laplacian);
figure;
subplot(121);imshow(A);
subplot(122);imshow(-B3);
figure;
subplot(121);imshow(A);
subplot(124);imshow(A-B3);
2. 八邻域的拉普拉斯算子滤波
a = im2double(imread('blurry_moon_3e.tif'));
lap = [-1 -1 -1; -1 8 -1; -1 -1 -1];
resp = imfilter(a, lap, 'conv');
%// Change - Normalize the response image
minR = min(resp(:));
maxR = max(resp(:));
resp = (resp - minR) / (maxR - minR);
%// 更改-现在添加到原始图像
sharpened = a + resp;
%// 更改-标准化锐化的结果
minA = min(sharpened(:));
maxA = max(sharpened(:));
sharpened = (sharpened - minA) / (maxA - minA);
%// 改变-执行线性对比度增强
sharpened = imadjust(sharpened, [60/255 200/255], [0 1]);
figure;
subplot(1,3,1);imshow(a); title('原始图像');
subplot(1,3,2);imshow(resp); title('拉普拉斯滤波图像');
subplot(1,3,3);imshow(sharpened); title('锐化图像');
- 锐化的主要目的是突出灰度的过渡部分
- 因此,图像微分增强边缘和其他突变(如噪声)而削弱灰度变化缓慢的区域
总结
今天算是matlab初体验,从安装、配置matlab,到了解其中的函数、包、库、再到最后完成学习任务,在这个过程中我还是学到了很多东西的,不仅感受到了matlab的强大功能,也极大锻炼了我主动学习和自主解决问题的能力,同时加深了我对一些图像处理知识的理解,从理论到实践,我觉得这是一个能够产生质变的过程。