第一天:
①直方图均衡
②均值滤波、高斯滤波、中值滤波
③拉普拉斯滤波器
MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.
当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.
开放性使MATLAB广受用户欢迎.除内部函数外,所有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('H1原图直方图');
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('H2原图直方图');
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('H4原图直方图');
subplot(3,2,5);
H4_=histeq(H4);
imshow(H4_); title('histeq均衡后图');
subplot(3,2,6);
imhist(H4_); title('histeq均衡后直方图')
得到图像如下:
H4
结果分析:
我们发现,在我们对图像进行直方图均衡之后,其直方图的灰度范围(跨度)变得更大了,其图像效果也变得更加明显,所以,我们可以得出结论:
如果一幅图像其灰度直方图跨越整个灰度范围,并且成均匀分布,那么这副图像细节丰富、对比度及动态范围高,视觉质量好
% 添加噪声
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.2的椒盐噪声');
% 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.2的椒盐噪声');
imshow(k1),title('3x3均值滤波');
imshow(uint8(k1)),title('3x3均值滤波');
imshow(G),title('高斯滤波');
imshow(D),title('中值滤波');
得到图像如下:
结果分析:
从结果可以看出,中值滤波在处理椒盐噪声的问题中有很大的优势
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);
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的强大功能,也极大锻炼了我主动学习和自主解决问题的能力,同时加深了我对一些图像处理知识的理解,从理论到实践,我觉得这是一个能够产生质变的过程。