2016-02-24 21:04:01 jly58fgjk 阅读数 2917

学习了数字图像图像处理一段时间,下面是我对预处理方面的一些总结。

首先,了解了预处理对数字图像有什么影响?

预处理的主要目的是消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性和最大限度地简化数据,从而改进特征抽取、图像分割、匹配和识别的可靠性。预处理过程一般有数字化、几何变换、归一化、平滑、复原和增强等步骤。下面是我对图像增强的总结。

图像增强有很多种方法,针对不同图像要采取不同的方法,直方图均衡化、对比度拉伸是常用到的方法,使灰度图像颜色更加分明,针对含有噪声的图像。可以采用滤波,包含平滑滤波和锐化滤波。

一、直方图处理

1、直方图均衡化

直方图均衡化就是一种能仅靠输入图像直方图信息自动达到这种效果的变换函数。

它的基本思想是对图像中像素个数多的灰度级进行展宽,而对图像中像素个数少的灰度进行压缩,从而扩展像原取值的动态范围,提高了对比度和灰度色调的变化,使图像更加清晰。直方图均衡化是一种对图像的非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。

       函数:histeq

实现代码如下:I=imread('2.jpg');
                               I=rgb2gray(I);
                             %K=16; 
                            %H=histeq(I,K); 
                            H=histeq(I);

                    figure,,imshow(H); 

2、对比度拉伸   

函数:imadjust

代码例如:

I=imadjust(I2,stretchlim(I2),[0,1]);

二、滤波法

均值滤波

均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。

模板有3*3、5*5、7*7三种。

实现代码如下:

clc;clear;close all;
img=rgb2gray(imread('lena1.jpg'));
figure;imshow(img);  
img_noise=double(imnoise(img,'gaussian',0.006));%添加高斯噪声 
figure,imshow(img_noise,[]); 
img_mean=imfilter(img_noise,fspecial('average',3)); %均值模板3*3
figure;imshow(img_mean,[]);title('de-noise by mean filter');
imag_mean=exp(imfilter(log(img_noise),fspecial('average',5)));%模板5*5 
figure;imshow(img_mean,[]),title('de-noise by mean filter');
Q=-1.5;  
img_mean=imfilter(img_noise.^(Q+1),fspecial('average',3))./imfilter(img_noise.^Q,fspecial('average',3)); 
figure;imshow(img_mean,[]);title('de-noise by mean filter'); 
Q=1.5;  img_mean=imfilter(img_noise.^(Q+1),fspecial('average',3))./imfilter(img_noise.^Q,fspecial('average',3)); 
figure;imshow(img_mean,[]);title('de-noise by mean filter');

中值滤波

中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为3*3,5*5区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。

实现代码如下:

img_median=medfilt2(img_noise);%中值滤波 
      figure;imshow(img_median,[]);title('de-noise by median filter')%中值滤波结果; 
     img_median2=medfilt2(img_midian); 
     figure;imshow(img_median2,[]);title('de-noise by median filter');

上述两种为平滑滤波

锐化滤波

  锐化用于补偿和增加图像的高频成分,使图像中的地物边界、区域边缘、线条、纹理特征和精细结构特征等更加清晰、鲜明。

利用算子prewitt、sobert、拉普拉斯算子实现

clc;clear;close all;
I=imread('lena.jpg');
%I=rgb2gray(I); 
subplot(221),imshow(I); title('原图');
hs=fspecial('sobel');
S=imfilter(I,hs);
hp=fspecial('prewitt'); 
P=imfilter(I,hs); 
A=double(I);%双精度型  
H=[0 1 0,1 -4 1,0 1 0];%拉普拉斯算子 
J=conv2(I,H,'same'); 
K=I-J;  
subplot(222),imshow(J); title('拉普拉斯锐化图像');
subplot(223),imshow(S); title('sobel算子锐化图像');
subplot(224),imshow(P); title('prewitt算子锐化图像');


低通滤波(平滑)

下面为巴特沃斯低通滤波的实现代码:

clc;clear;close all;
I=imread('lena1.jpg');
I=rgb2gray(I);
figure,imshow(I);
I1=fftshift(fft2(I));
[M,N]=size(I1);
n=2;d0=30;
n1=floor(M/2);
n2=floor(N/2);
for i=1:M
    for j=1:N
        d=sqrt((i-n1)^2+(j-n2)^2);
        H=1/(1+(d/d0)^(2*n));
        I2(i,j)=H*I1(i,j);
    end
end
I2=ifftshift(I2);
I3=real(ifft2(I2));
figure,imshow(I3,[]);

高通滤波(锐化)

下面代码为巴特沃斯高通滤波的实现代码:

clc;clear;close all;
f1=imread('lena1.jpg');
f1=rgb2gray(f1);
F= double(f1);     % 数据类型转换,MATLAB不支持图像的无符号整型的计算  
G = fft2(F);        % 傅立叶变换   
G = fftshift(G);     % 转换数据矩阵  
[M,N]=size(G);    
nn = 2;           % 二阶巴特沃斯(Butterworth)高通滤波器  
d0 = 5;  
m = fix(M/2);  
n = fix(N/2);  
for i = 1 : M       
    for j = 1 : N     
        d = sqrt((i-m)^2+(j-n)^2);   
        if (d == 0)      
             h = 0;   
        else
            h=1/(1+0.414*(d0/d)^(2*nn));% 计算传递函数   
        end;      
        result(i,j) = h * G(i,j);     
    end;  
end; 
result = ifftshift(result);   
J2= ifft2(result); 
J3= uint8(real(J2));
subplot(121);imshow(f1); title('灰色图像'); 
subplot(122);imshow(J3);  % 滤波后图像显示
title('滤波后的图像');

高斯滤波

部分代码:

%gaussian低通滤波
H=fspecial('gaussian',7,3);
F{2}=double(filter2(H,I));
figure,imshow(F{2},[]);


滤波部分实现代码网址

http://wenku.baidu.com/link?url=3U5MZxgxbursdIBYSVden1i8rxSxFlBaf_glnibz8Me2hG6vADZz5419XQIRlc5OrpGM8uibQI_siBwoiFvaDVPM1ewwgRV48voh7sgIoIi

http://wenku.baidu.com/link?url=esi3wmkrucc4k3lbHFtSGL2OWFMjZwz_hoB_aQQh6GiXDwxni9GFnMGhJVOWgBa6Ulm3Vf1qB0auBjKRyCY_EBKPpgMZphXeovcTRG1WyHK


 

2018-11-19 15:09:43 YeziTong 阅读数 422

概述:

 

1)预处理是指处于最低抽象层次的图像上所进行的操作,这时处理的输入和输出都是亮度图像

2)预处理并不会增加图像的信息量预处理有助于抑制与特殊的图像处理或分析任务无关的信息。因此预处理的目的是改善图像数据,抑制不需要的变形或者增强某些对于后续处理重要的图像特征。

图像预处理方法按照在计算新像素亮度时所使用的像素邻域的大小可以分为四类:

1)像素亮度变化

2)几何变换

3)局部邻域预处理

4)图像复原

(1)像素亮度变化

 

1)有两类像素亮度变换

   亮度矫正

   灰度级变换

2)亮度矫正在修改像素的亮度时要考虑该像素原来的亮度和其在图像中的位置

3)灰度级变换在修改像素的亮度时无须考虑其位置

4)常用的亮度变换有:

   亮度阈值化

   直方图均衡化

   对数的灰度级变换

   查找表变换

   伪彩色变换

5)直方图均衡化目的是创建一幅在整个亮度范围内具有相同的亮度图像

 

(2)几何变换

 

1)几何变换可以消除图像获取时所出现的几何变形

2)几何变换一般是由两个基本步骤组成:

   像素坐标变换

   亮度插值

3)像素坐标变换将输入图像像素映射到输出图像,常使用“仿射变换”和“双线性变化”

4)经过变换,输出点的坐标一般并不符合数字离散光栅;插值被用来确定输出像素的亮度。常使用“最近邻”、“线性”、“双三次”。

 

3)局部预处理

 

1)局部预处理方法是使用输入图像中一个像素的小邻域来产生输出图像中新的亮度数值的方法。

2)预处理常见的有两组:“平滑”和“边缘检测”。

3)平滑的目的在于抑制噪声或其他小的波动,这等同于在傅里叶频域抑制高频部分,

4)基于直接平均的平滑方法会模糊边缘。改进的方法通过在一致性的局部区域内平均来减小模糊。

5)“中值”滤波是一种非线性操作,它用邻域中亮度的中值代替图像当前的点来减少模糊。

6)“梯度算子”确定“边缘”,边缘是亮度函数发生急剧变化的位置。它们的效果类似于在傅里叶频域抑制低频部分。

7)边缘是赋给单个像素的性质,它既有“幅值(强度)”又有“方向”。

8)多数梯度算子可以用“卷积掩膜”来表达,例子包括Roberts、Laplace、Prewitt、Sobel、Kirsch算子。

9)卷积边缘检测子的主要缺点是依赖尺度且对噪声敏感。选择某个最好的局部邻域算子尺度并不是那么容易决定的。

10)二阶导数“过零点”比小尺度的梯度检测子更稳定,可以用Laplace ofGaussians(LoG)或difference ofGaussians(DoG)来计算

11)Canny边缘检测算子对受白噪声影响的阶跃型边缘是最优的。最优性标准是基于如下要求:“检测”重要边缘、小的“定位”误差、“单边缘响应”。该检测子与一个对称2D高斯做卷积,再沿梯度方向微分;接着步骤包括“非最大边缘抑制”、“滞后阈值化处理”和“特征综合”。

12)在多光谱图像中也可以检测边缘

13)其他局部预处理运算包括“线条寻找”、“线条细化”、“线条补缺”以及“兴趣点检测”

14)一幅图像中诸如角点和最大稳定极值区域等结构包括更丰富的信息,检测边缘更为稳定。它们常用于图像匹配。

 

 

(4)图像复原

 

1)图像复原旨在利用有关退化性质知识来抑制退化。多数图像复原方法是基于整幅图像上的全局性“去卷积”的方法。

2)有三种典型的退化具有简单的函数形式:物体相对于摄像机作近似均速的运动、不当的镜头焦距、大气扰动。

3)“逆滤波”假设退化是由线性函数引起的。

4)“维纳滤波”给出了对未被噪声污染的原始图像的一个最小均方误差估计;一般而言,它是退化图像的非线性函数。

 

2016-01-06 13:31:41 q664111 阅读数 2231

图像格式转换

在图像处理中,读入的图片通常是uint8格式,一是由于unit8的精读问题,二是由于有的函数不支持uint8类型,所以通常要转换成为double格式。
转换通常要用im2double()函数,而不用double()或mat2gray()函数
他们的区别如下
im2double():将0-255的uint8类型转换为0-1的double类型
double():直接将0-255的uint8类型转换为0-255的double类型
mat2gray():将0-”最大的数“的uint8类型转换为0-1的double类型
例如:

 B = [5,5,5;5,2,25;25,5,2]
    5    5    5
    5    2   25
   25    5    2                 (类型为uint8)

 B1 = im2double(B)
    0.0196    0.0196    0.0196
    0.0196    0.0078    0.0980
    0.0980    0.0196    0.0078  (类型为double)

 B2 = mat2gray(B)
    0.1304    0.1304    0.1304
    0.1304         0    1.0000
    1.0000    0.1304         0  (类型为double)

 B3 = double(B)
     5     5     5
     5     2    25
    25     5     2              (类型为double)

2、加入噪声

高斯噪声

在对图像添加高斯噪声通常有两种方法,一是加入指定均值与方差的噪声,即使用imnoise( )函数,这种方法易于理解,在此不做赘诉。二是加入干扰强度与图像能量相关的噪声,即使用awgn( )函数。三是直接使用简单函数

awgn( )函数使用方法如下:y=awgn(x,snr,’measured’,powertype)
其中x为输入图像;snr为信噪比;
measure有用信号能量来自测量图像的信号能量,能量计算方法为:
sigPower = sum(abs(sig(:)).^2)/length(sig(:))
powertype可以是’dB’或’linear’。如果powertype是’dB’,那么SNR以dB为单位。如果POWERTYPE是’linear’,那么SNR作为比值来度量。
例如 y=awgn(x,snr,’measured’,powertype)

直接使用简单函数的方法如下(未验证)
sigPower = sum(abs(sig(:)).^2)/length(sig(:)); %求出信号能量
noisePower=sigPower/SNR; %求出噪声能量
noise=sqrt(noisePower)*randn(n,1); %得到高斯随机噪声
y=sig+noise; %得到高斯信号

均匀噪声

椒盐噪声

2015-05-29 13:52:42 u011177305 阅读数 5208

由于受多种因素(光学系统失真、系统噪声、曝光不足或过量等)条件的影响,得到的图片往往信息微弱,无法辨识,需要进行增强处理。增强的目的,在于提供一个满足一定要求的图像,或对图像进行变换,以进行分析。

 图像平滑

像平滑的目的是为了减少图像噪声。图像的噪声来自于多方面,有来自于系统外部干扰,如电磁波或经电源串进系统内部而引起的外部噪声,也有来自于系统内部的干扰,如摄像机的热噪声,电器机械运动而产生的抖动噪声等内部噪声。因此,去除噪声,恢复原始图像是图像处理中的一个重要内容。噪声主要来自下面三个方面:

(1)光电子噪声:主要由光的统计本质和图像传感器的光电转换过程引起的(如光电管的光量子噪声和电子起伏噪声);

(2)电子噪声:主要来自电子元器件(如电阻引起的热噪声);

(3)光学噪声:主要由光学现象产生的(如胶片的粒状结构产生的颗粒噪声);

图像在生成和传输过程中受到这些噪声的干扰和影响,使图像处理结果变差。因此,抑制或消除这些噪声从而改善图像质量,在图像处理过程中是一个重要的预处理,也称为对图像的平滑滤波过程。

2.1.1 中值滤波原理

中值滤波是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。中值滤波首先是被应用在一维信号处理技术中,后来被二维图像信号处理技术所应用。在一定的条件下,可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。中值滤波的目的是保护图像边缘的同时去除噪声。

在一维的情况下,中值滤波器是一个含有奇数个像素的窗口,在处理之后,将窗口正中的像素灰度值用窗口内各像素灰度值的中值来代替。设有一个维序列f1,f2,…,fn,取窗口长度为奇数m,对此序列进行中值滤波,就是从输入序列中相续抽出m个数,fi-v,…fi,…fi+v,其中为窗口的中心值v=(m-1)/2,再将这m个点的数值按其数值大小排列,取其序号为正中间的那个数作为滤波输出。中值滤波表达式为:

  (无法插入公式,这个好烦。)              (2-1)

对二维序列{Xi,j}的中值滤波,滤波窗口也是二维的,但这种二维窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维中值滤波可表示为:

              (2-2)

在实际使用窗口时,窗口的尺寸一般先用再取逐渐增大,直到其滤波效果满意为止。

由于中值滤波是非线性运算,在输入和输出之间的频率上不存在一一对应关系,故不能用一般线性滤波器频率特性的研究方法。设G为输入信号频谱,F为输出信号频谱,定义为中值滤波器的频率响应特性,实现表明H是与G有关,呈不规则波动不大的曲线,其均值比较平坦,可以认为信号经中值滤波后,传输函数近似为1,即中值滤波对信号的频域影响不大,频谱基本不变。


2.2 灰度调整

在成像过程中,扫描系统、光电转换系统中的很多的因素,如光照强弱、感光部件灵敏度、光学系统不均匀性、元器件特性不稳定等均可造成图像亮度分布的不均匀,导致某些部分亮,某些部分暗。灰度调整就是在图像采集系统中对图像像素进行修正,使整幅图像成像均匀。


灰度调整可使图像动态范围增大,图像对比度扩展,图像变清晰,特征明显,是图像增强的重要手段之一。

在曝光不足或过度的情况下,图像灰度可能会局限在一个很小的范围内。这时在显示器上看到的将是一个模糊不清、似乎没有灰度层次的图像。采用线性灰度调整对图像每一个像素灰度作线性拉伸,将有效地改善图像视觉效果。

2017-12-18 20:54:01 IT_job 阅读数 14239

       图像分析中,图像质量的好坏直接影响识别算法的设计与效果的精度,因此在图像分析(特征提取、分割、匹配和识别等)前,需要进行预处理。图像预处理的主要目的是消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性、最大限度地简化数据,从而改进特征提取、图像分割、匹配和识别的可靠性。一般的预处理流程为:1灰度化->2几何变换->3图像增强

1灰度化

       对彩色图像进行处理时,我们往往需要对三个通道依次进行处理,时间开销将会很大。因此,为了达到提高整个应用系统的处理速度的目的,需要减少所需处理的数据量。在图像处理中,常用的灰度化方法:1.分量法2.最大值法3.平均值法4.加权平均法

2几何变换

        图像几何变换又称为图像空间变换,通过平移、转置、镜像、旋转、缩放等几何变换对采集的图像进行处理,用于改正图像采集系统的系统误差和仪器位置(成像角度、透视关系乃至镜头自身原因)的随机误差。此外,还需要使用灰度插值算法,因为按照这种变换关系进行计算,输出图像的像素可能被映射到输入图像的非整数坐标上。通常采用的方法有最近邻插值、双线性插值和双三次插值

3图像增强

       增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合,有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。图像增强算法可分成两大类:空间域法和频率域法。

3.1空间域法

       空间域法是一种直接图像增强算法,分为点运算算法邻域去噪算法。点运算算法即灰度级校正、灰度变换(又叫对比度拉伸)和直方图修正等。邻域增强算法分为图像平滑锐化两种。平滑常用算法有均值滤波、中值滤波、空域滤波。锐化常用算法有梯度算子法、二阶导数算子法、高通滤波、掩模匹配法等。

3.2频率域法

        频率域法是一种间接图像增强算法,常用的频域增强方法有低通滤波器高通滤波器。低频滤波器有理想低通滤波器、巴特沃斯低通滤波器、高斯低通滤波器、指数滤波器等。高通滤波器有理想高通滤波器、巴特沃斯高通滤波器、高斯高通滤波器、指数滤波器。

一、图像预处理

阅读数 1544

没有更多推荐了,返回首页