您的位置:首页 > 编程语言 > MATLAB

Matlab图像处理预处理

2016-01-06 13:31 351 查看

图像格式转换

在图像处理中,读入的图片通常是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; %得到高斯信号

均匀噪声

椒盐噪声

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: