基于matlab进行图像处理学习——从入门到入魔

第一天:
①直方图均衡
②均值滤波、高斯滤波、中值滤波
③拉普拉斯滤波器

关于matlab

matlab基本概况

MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.

当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.

开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.

学习任务

  1. 使用matlab对四张图片分别进行直方图均衡,并且分别显示原始图像、均衡后图像、以及对应的直方图
  2. 使用matlab对图像添加强度为0.2的椒盐噪声,并且分别使用3x3的均值滤波器、高斯平滑滤波器和中值滤波器对添加噪声的图像进行平滑滤波,并分别显示原始图像、添加噪声的图像、以及各平滑滤波后图像
  3. 分别使用拉普拉斯滤波器:
    在这里插入图片描述
    对图像进行锐化

实现

  • 使用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均衡后直方图')

得到图像如下:

  1. H1
    基于matlab进行图像处理学习——从入门到入魔_第1张图片

  2. H2
    基于matlab进行图像处理学习——从入门到入魔_第2张图片

  3. H3
    基于matlab进行图像处理学习——从入门到入魔_第3张图片

  4. H4
    基于matlab进行图像处理学习——从入门到入魔_第4张图片
    结果分析:
    我们发现,在我们对图像进行直方图均衡之后,其直方图的灰度范围(跨度)变得更大了,其图像效果也变得更加明显,所以,我们可以得出结论:
    如果一幅图像其灰度直方图跨越整个灰度范围,并且成均匀分布,那么这副图像细节丰富、对比度及动态范围高,视觉质量好

  • 使用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.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('中值滤波');

得到图像如下:

  1. 原图
    基于matlab进行图像处理学习——从入门到入魔_第5张图片

  2. 添加强度为0.2的椒盐噪声
    基于matlab进行图像处理学习——从入门到入魔_第6张图片

  3. 3x3均值滤波
    基于matlab进行图像处理学习——从入门到入魔_第7张图片

  4. 高斯滤波
    基于matlab进行图像处理学习——从入门到入魔_第8张图片

  5. 中值滤波
    基于matlab进行图像处理学习——从入门到入魔_第9张图片

结果分析:

从结果可以看出,中值滤波在处理椒盐噪声的问题中有很大的优势

  • 使用拉普拉斯滤波器对图像进行锐化
  1. 四邻域的拉普拉斯算子滤波
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);

结果如下:
基于matlab进行图像处理学习——从入门到入魔_第10张图片
基于matlab进行图像处理学习——从入门到入魔_第11张图片
基于matlab进行图像处理学习——从入门到入魔_第12张图片
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进行图像处理学习——从入门到入魔_第13张图片

基于matlab进行图像处理学习——从入门到入魔_第14张图片
结果分析:

  • 锐化的主要目的是突出灰度的过渡部分
  • 因此,图像微分增强边缘和其他突变(如噪声)而削弱灰度变化缓慢的区域

总结

今天算是matlab初体验,从安装、配置matlab,到了解其中的函数、包、库、再到最后完成学习任务,在这个过程中我还是学到了很多东西的,不仅感受到了matlab的强大功能,也极大锻炼了我主动学习和自主解决问题的能力,同时加深了我对一些图像处理知识的理解,从理论到实践,我觉得这是一个能够产生质变的过程。
基于matlab进行图像处理学习——从入门到入魔_第15张图片

你可能感兴趣的:(图像处理,matlab)