上一次内容是讲空域变换增强里的直接灰度调整方法,这次讲另外两种:直方图处理和图像间的代数运算 。
一、直方图处理
1.直方图均衡化
基本思想:把原始图像的直方图变换成均匀分布的形式,增加图像灰度值的动态范围,从而达到增强图像整体对比度的效果。本质是扩大了量化间隔,而量化级别反而减少了。
作用:把给定图像的直方图分布改成均匀直方图的分布,使输出像素灰度的概率密度均匀分布。直观地说,会导致对比度增加。
局限性:具体增强效果不易控制,处理的结果总是得到全局均衡化的直方图。
缺点:
a.变换后图像的灰度级减少,某些细节消失
b.某些图像,如直方图有高峰,经处理后对比度过分增强
c.原来灰度不同的像素经处理后可能变得相同,形成一片相同灰度的区域,各区域之间有明显的边界,从而出现了伪轮廓。
这里我们用histeq函数实现对输入图像的直方图均衡化。
语法格式:
1) J=histeq(I); 2) [J,T]=histeq(I),T为转移函数,即由I变换成J的函数
例子:
I=imread('tire.tif'); J=histeq(I); %进行直方图均衡化 subplot(2,2,1); imshow(I); title('原始图像'); subplot(2,2,2); imshow(J); title('直方图均衡图像'); subplot(2,2,3); imhist(I); title('原始图像直方图'); subplot(2,2,4); imhist(J); title('均衡化图像直方图'); I=imread('tire.tif'); [J,T]=histeq(I); figure,plot((0:255)/255,T); %绘制转移函数的变换曲线
运行后如下:
这里注意下最后一句:figure,plot((0:255)/255,T);在有些教材里面,打错成了:
figure,plot((0:255/255),T);
运行后会报错:
2.gamma校正
gamma为何物?其实在前面我们已经提过了,在讲用imadjust实现灰度级变换的时候。
语法格式:J=imadjust(I,[low_in high_in],[low_out high_out],gamma)
gamma取值决定了映射的方式,即决定了对图像的变换是进行增强低灰度还是增强高灰度。取值范围是0到无穷。默认情况下gamma参数为1,采用的是线性变换。
当gamma<1,输出像素灰度值比原来大;(变亮)
当gamma>1,输出像素灰度值比原来小。(变暗)
依旧举个例子:
[X,map]=imread('1.bmp'); %X是索引图像数据矩阵,map是颜色图,文件filename读取到X的map向量中,如果要图片显示,imshow(X.map)就可以了 I=ind2gray(X,map); %将索引图像转化为灰度图像 J1=imadjust(I,[],[],0.5); %gamma取值为0.5的变换 J2=imadjust(I,[],[],1); %gamma取值为1的变换 J3=imadjust(I,[],[],2); %gamma取值为2的变换 subplot(2,2,1);imshow(I);title('原始图像'); subplot(2,2,2);imshow(J1);title('gamma为0.5的变换'); subplot(2,2,3);imshow(J2);title('gamma为1的变换'); subplot(2,2,4);imshow(J3);title('gamma为2的变换');
如此我们就可以仅仅通过改变gamma控制图像的明亮,而不必扩大灰度值的范围。
3.直方图规定化
前面提到了直方图均衡化,它是对图像的灰度值作了全局均匀化处理,而直方图规定化则是有选择地增强某个灰度值范围的对比度,即可人为地控制灰度值的分布。
这里来我们要用到histeq的一种语法格式:J=histeq(I,hgram)
注:hgram是用户指定的向量,规定将原始图像I的直方图近似变换成hgram,每一个元素都在[0,1]中。
例:
I=imread('tire.tif'); hgram=0:255; %直方图变换的规定化函数 J=histeq(I,hgram); %将图像向指定的直方图变换
二、图像间的代数运算
图像间其实也可以像数字那样做加减乘除的运算,但是由于结果容易超出数据类型允许的范围,故采取相应的截取规则:
(1)超出数据类型运行的范围的值用数据类型的最大值代替;分数的结果采用四舍五入的方法取整。
(2)使用这些函数的时候,不用进行数据类型的转换,这些函数可以接受uint8和unit16数据类型,并返回相同格式的图像结果。
(3)可以使用基本算数运算符来进行图像的算数操作运算,但是不同于函数,必须在运算前将图像转换为适合进行算数运算的双精度数据类型
(4)任何一个代数运算,都必须保证输入图像的大小相等,且数据类型一致。
同时还要知道,运算的两个对象必须是相同类型,而且是相同大小!!
1.相加运算
相加运算的作用非常多,既能使图像亮度增加,又能使图像叠加,还能够降低噪声。
用到的函数为imadd函数,语法格式为K=imadd(I,J,'unit8');
例1:
%使图像亮度增加 RGB=imread('2.jpg'); RGB2=imadd(RGB,50); %对图像的每个像素加上一个常数
例2:
%将两个图像叠加在一起 I=imread('tire.tif'); J=imread('cameraman.tif'); K=imadd(I,J,'unit8'); %实现两幅图像的叠加 imshow(k,[]);
例3:
首先先解释下降噪的原理,图像相加运算是采取求平均值降噪的。在求平均值的过程中,图像的静止部分不会改变;而对每一副图像,各不相同的噪声图案则累积得很慢,通过对这些图像求平均值,可以有效地降低随机噪声的影响。
下面我们先对原始图像添加高斯噪声,然后再通过求平均值降噪。
代码如下:
clear; %图像代数运算有相同大小,所以先清除变量 I=imread('1.bmp'); subplot(2,2,1); imshow(I);title('原始图像'); [m,n]=size(I); J(m,n)=0; J=double(J); X=imnoise(I,'gaussian');Y=double(X); %加入高斯噪声 subplot(2,2,2); imshow(X);title('加噪图像一'); J=J+Y/10; X=imnoise(I,'gaussian');Y=double(X); subplot(2,2,3); imshow(X);title('加噪图像二'); J=J+Y/10; for i=1:8 %循环运算,对噪声的图像取平均值 X=imnoise(I,'gaussian'); Y=double(X); J=J+Y/10; end subplot(2,2,4); imshow(mat2gray(J)); title('10幅噪声图像平均结果');
不信,你看
2.相减运算
相减运算的作用也不少,取出一幅图像中不需要的加性团,也可以用于检测同一场景的两幅图像间的变化。
注:加性团可能是缓慢变化的背景阴影、周期性的噪声,或在图像上每个像素处均一致的附加污染等。
相减运算用的函数是imsubtract函数,语法格式为I3=imsubtract(I,I2);
例:
%去掉背景亮度图像 clear,close all I=imread('1.bmp'); subplot(1,2,1); imshow(I); title('原始图像'); background=imopen(I,strel('disk',15)); %得到背景图像 I2=imsubtract(I,background); %得到代数减法去掉图像中的背景图像 subplot(1,2,2); imshow(I2); title('去除背景的图像');
值得提醒的是:进行减法运算时,可能导致某些像素值结果为负数。此时imsubtract函数会自动将这些赋为0。这里你也可以用imasbdiff函数,它计算的是两幅图像像素差值的绝对值。
乘除法就不作介绍了,空域变换增强部分如此就大致讲完了。
相关推荐
matlab;图像增强;空域图像增强;灰度求反;包含代码和文档详解;已经测试通过;效果良好。
实验目的: 掌握图像空域变换的基本原理与常用方法。 实验要求: 编程实现: 1、 图像像素的变换,[a,b]范围转换到[c,d]中; 2、 图像的中值滤波(或均值滤波)。
用C语言编写的图像增强变换 指数增强 POWER LAW 方法
图像处理课堂作业源码,可交互选择图像分别进行空域平滑,锐化,频域平滑,锐化,直方图处理等
数字图像处理基本处理之一:空域增强。 一、图象灰度变换; 二、图象平滑; 三、图象锐化;
5、掌握数字图像的空域和频域图像增强方法。 6、掌握数字图像的加噪与去噪方法。 二、实验要求 1. 分析并运行附件程序中的线性灰度增强程序,修改线性变换函数的参数值,观察图像的变化。 2. 参照线性灰度...
1.2医学图像增强以及相关理论的现状2 1.3本文内容安排 2图像增强技术 2.1空域增强方法 2.1.1空域点运算增强方法 2.1.2空域滤波增强方法 2.2频域增强算法 2.2.1低通滤波 2.2.2高通滤波 2.2.3同态滤波 2.3本章小结 3...
图像增强C#算法,多种算法,频域增强,空域增强,图像锐化
图像增强有各种方法,包括灰度变换,空域,频域等,现有部分比较有代表性的程序与大家共享! 程序代码说明 pr01:数字图像矩阵数据的显示及其傅立叶变换 pr02:二维离散余弦变换的图像压缩 pr03:采用灰度...
(3)频域图像增强,包括图像的傅里叶变换和反变换(需要考虑图像旋转、平移时的变换)、高通和低通滤波器(分别考虑:理想滤波器、巴特沃斯滤波器,指数滤波器)、特殊高通滤波器(高频增强滤波器、高频提升滤波器)...
1.掌握灰度直方图的概念及其计算方法; 2.熟练掌握直力图均衡化和直方图规定化的计算过程; 3.熟练掌握空域滤波中常用的平滑和锐化滤波器; 4.掌握色彩直方图的概念和计算方法 5.利用MATLAB程序进行图像增强
图像增强按作用域可分为空域内处理和频域内处理,空域内处理是直接对图像进行处理,频域内处理是在图像的某个变换域内,对图像的变换系数进行运算,然后通过逆变换获得图像增强效果。本章将详细的介绍通过MATLAB进行...
在数字图像中,空域中的对比度拉伸增强变换。用matlab编写的程序。
根据图像处理中空域增强,用matlab编写关于拉普拉斯增强的一些代码
图像增强,包括空域法频域法彩色增强灰度变换增强。全面实用的课件。综合各种课件的整合
(1)空域中的亮度变换(负变换,对数与对比度拉伸变换等)、直方图的均衡化; (2)空间域增强方法:线性滤波算法(如低通滤波、高通滤波等)、非线性滤波算法(如中值滤波法、最大值滤波法、最小值滤波法等) (3...
MATLAB图像增强程序举例 灰度变换增强程序 直方图灰度变换 直方图均衡化程序举例 直方图规定化程序举例 空域滤波增强部分程序 频域增强程序举例 布特沃斯低通滤波器图像实例 色彩增强程序举例
1.灰度变换增强程序 2.直方图灰度变换 3.直方图均衡化程序举例 4.直方图规定化程序举例 1.线性平滑滤波 2.中值滤波器 3. 4邻域8邻域平均滤波算法 1.低通滤波器 2.布特沃斯低通滤波器图像实例
频域增强常用的方法有低通滤波和高通滤波,还有同态滤波。