`
海王子1994
  • 浏览: 45481 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

图像增强之空域变换增强(2)

 
阅读更多

     上一次内容是讲空域变换增强里的直接灰度调整方法,这次讲另外两种:直方图处理和图像间的代数运算   。

 

一、直方图处理

 

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函数,它计算的是两幅图像像素差值的绝对值。

 

乘除法就不作介绍了,空域变换增强部分如此就大致讲完了。

 

 

  • 大小: 82.1 KB
  • 大小: 106.6 KB
  • 大小: 97.7 KB
  • 大小: 146 KB
  • 大小: 25.5 KB
  • 大小: 3.6 KB
0
1
分享到:
评论
1 楼 梳子不爱头发 2015-03-31  
写的很详细,不信你看

相关推荐

    基于matlab的图像增强—空域变换增强(一)

    本教程将聚焦于使用MATLAB进行图像增强的空域变换方法,特别是灰度求反操作。MATLAB作为一个强大的数学计算和数据分析环境,提供了丰富的图像处理工具箱,使得图像增强变得更加便捷。 首先,我们要理解什么是空域...

    实验五 图像空域增强 中值滤波 matlab实验报告 附代码

    本次实验的重点是掌握图像空域变换的基本原理与常用方法,主要包括线性灰度变换和中值滤波。这两种技术都在MATLAB环境下通过编写代码来实现,以此加深对图像空域增强技术的理解与应用。 实验目的: 本次实验的目标...

    数字图像实验(空域图像增强)

    实验的目的是掌握空域图像增强的实现,包括图像空间域亮度变换、直方图修正和空域滤波等技术。 一、实验目的: 1. 掌握灰度直方图的概念及其计算方法 2. 熟练掌握直方图均衡化过程 3. 熟练掌握空域滤波中常用的...

    数字图像处理实验(3)--图像空域变换.7z

    这些基本的几何变换在图像处理领域广泛应用,如图像配准、目标定位和图像增强等。实验的目标是通过编程实现这些变换,并采用双线性插值来处理非整数位置的像素值,以确保变换后的图像质量。 首先,我们要理解图像的...

    matlab图像处理(空域频域滤波和直方图)

    空域滤波是直接对图像像素值进行操作,通过邻域平均、高斯滤波等方式来消除噪声或增强图像特征。MATLAB提供了多种内建函数,如`imfilter`,可以实现自定义滤波器对图像进行空域处理。例如,`gaussianFilter`用于...

    图像增强空域和频域

    图像增强技术主要分为两大类:空域增强和频域增强。空域增强直接作用于图像的像素值,而频域增强则是通过改变图像的频率成分来实现增强效果。 一、空域增强 空域增强技术直接对图像的空间域数据进行操作,是最直观...

    用C编写的图像增强变换

    在这个项目中,我们关注的是用C语言实现的图像增强变换,特别是指数增强(也称为幂律变换或POWER LAW方法)。本文将深入探讨这个主题,包括C语言编程基础、图像增强的基本概念以及指数增强的理论与实践。 首先,...

    数字图像处理实验报告空域图像增强技术.pdf

    数字图像处理实验报告空域图像增强技术 一、实验目的 本实验的目的是学习如何在视频显示程序中增加图像处理算法,理解和掌握图像的线性变换和直方图均衡化的原理和应用,了解平滑处理的算法和用途,学习使用均值...

    实验二_空域_图像增强_频域_

    图像增强是图像处理领域中不可或缺的技术之一,它通过各种算法的运用对图像进行改善,以达到突出图像中重要特征、改善视觉质量,或为后续的分析和处理提供便利。本实验涵盖了空域和频域两种主要的图像增强方法,深入...

    (Opencv C++)数字图像处理——空域增强

    总结来说,OpenCV库为C++程序员提供了强大的工具,帮助他们实现在空域内的图像增强。通过灰度变换、平滑和锐化等技术,我们可以有效地改善图像质量,增强视觉效果,这对于计算机视觉和图像分析等领域具有重要的意义...

    c#图像增强(空域、频域、锐化等)

    本项目聚焦于图像增强技术,包括空域增强、频域增强和锐化等核心概念,这些都是提高图像质量和分析图像特征的关键手段。 1. **空域增强**:在空域中,图像增强主要通过直接操作像素值来改善图像的视觉效果。常见的...

    数字图像空域增强实验.zip

    3. **图像空域增强**:图像增强主要在像素级别上进行,通过改变像素值来改善图像的视觉效果。除了上述的直方图均衡化和去噪,空域增强还包括锐化、平滑、对比度拉伸等操作。锐化能够突出图像边缘,增加细节;平滑则...

    图像增强技术(空域)~~~~~~~~

    ### 图像增强技术(空域) #### 一、引言 图像增强技术是图像处理领域的一个重要分支,其目标在于改善图像的视觉效果或者转换图像形式以满足特定任务的需求。图像增强并不追求图像的绝对真实度,而是侧重于通过...

    人体骨骼图像处理 空域

    总结起来,这个作业通过一系列的空域图像处理技术,从原始图像开始,逐步进行边缘检测、平滑滤波、锐化和对比度增强,最终得到了优化的人体骨骼图像。这些技术在实际的图像分析、医疗成像、计算机视觉等领域都有广泛...

    平时作业01:时空域与频域的图像处理_时频图像_matlab图像处理_图像处理大数据发展趋势_

    利用`fft2`进行二维傅里叶变换,`ifft2`进行逆变换,实现图像的频域分析。 - 通过MATLAB的图像处理工具箱,可以实现各种图像处理任务,如滤波、边缘检测、特征提取等。例如,`imgaussfilt`用于高斯滤波,`...

Global site tag (gtag.js) - Google Analytics