天天看點

Matlab圖像處理預處理圖像格式轉換2、加入噪聲

圖像格式轉換

在圖像進行中,讀入的圖檔通常是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; %得到高斯信号

均勻噪聲

椒鹽噪聲