一、利用Matlab实现亮度的变换
1、灰度变换
灰度变换就是对图像像素灰度值进行修正,使图像灰度值动态范围加大,对比度扩展,成像均匀清晰,达到改善图像质量的目的。
clear;
clc
I = imread('E:\DigitalImageProcessing\Image\Breast.jpg');
J = imadjust(I,[0 1],[1 0]); %明暗反转
J1 = imadjust(I,[0.5 0.75],[0 1]);%亮度范围扩展
subplot(1,3,1),imshow(I);
subplot(1,3,2),imshow(J);
subplot(1,3,3),imshow(J1);
2、直方图均衡化
一般情况下遥感图像灰度分布集中在较窄的区间,从而引起图像细节的模糊,为了使图像细节清晰,并使一些目标突出,达到图像增强的效果,可采用直方图均衡化使原图像灰度集中的区域拉开,使灰度分布均匀,从而增强图像整体对比度,使图像细节清晰。
代码:
clear;
clc
I = imread('E:\DigitalImageProcessing\images1\31.gif');
subplot(2,2,1),imshow(I);
title('原图');
subplot(2,2,2),imhist(I);%显示图像I的直方图
title('原图直方图');
G = histeq(I);%均衡化图像I
subplot(2,2,3),imshow(G);
title('均衡化后');
subplot(2,2,4),imhist(G);
title('均衡化后直方图');
二、领用Matlab实现空间滤波
进行图像处理时,有时需要先进行去除噪声的工作。最直接的去除噪声的方法是用滤波器进行滤波处理,对图像的像素执行滤波运算时,若对邻域内的像素的计算为线性,则对应的去除噪声技术就是线性空间滤波技术,否则,称此技术为非线性空间滤波技术。
1、线性空间滤波器
使用了生成淹模函数fspecial()和实现线性空间滤波函数imfilter()。
代码:
I =imread('E:\DigitalImageProcessing\images1\moon.jpg');
subplot (3,2,1),imshow(I);
w = fspecial('laplacian',0); %采用标准的拉普拉斯滤波器
g1 = imfilter(I,w,'replicate');% %图像I经过w掩膜向卷积,图像大小通过复制外边界的值扩展
subplot(3,2,2),imshow(g1);
%效果并不理想,因为原图是一幅uint8类图像,输出结果仍为uint8类,所有像素均为正值,
%而拉普拉斯滤波模板中存在负值,变换结果中的所有负值被截掉了。
%解决此问题,须先进行类型变换
f1 = im2double(I);
g2 = imfilter(f1,w,'replicate');
subplot(3,2,3),imshow(g2);
%此图像即含有负值的滤波结果,相比于原图,丢失了一些灰度色调,
%故还需用原图减去此滤波结果(以还原失去的灰度色调):
g3 = f1-g2;
subplot(3,2,4),imshow(g3);
%s使用掩膜为w8,获得的效果更好
w8 = [1 1 1; 1 -8 1; 1 1 1];
g8 = I - imfilter(I,w8,'replicate');
subplot(3,2,5),imshow(g8);
结果: