采样和量化

1.采样:一维信号时间轴、二维信号空间轴的数字化

采样频率、采样间隔:空间分辨率

2.量化:一维信号振幅、二维信号振幅、图像明暗的数字化

量化级数/量化数:幅度分辨率

3.信息无损复原,采样间隔多大合适?

设:采样间隔:T ,量子化数:(n为比特数)

则 无损复原的采样间隔:  【Nyquist frequency:2fmax】【f为频率】

例1:解 无损间隔 T <1/4

例2:解 无损间隔 T <1/6

例3:解 无损间隔 T <1/10 【公式:三角变换】

4.数字化的两个关键参数

①.时间或空间分辨率:频率越高,反映细节,数据量大

②.幅度分辨率:级数越大,反映细节,数据量大

5.采样和量化参数变化效果

①.采样频率越高(间隔越小),图像分辨率越高,图像的数据量越大

②.量化级数越高,图像细节的表示越丰富,图像的数据量越大(反之亦然)

6.数字图像的表示

①.各种各样的格式:JPG、GIF、tif、ppm、eps、bmp、raw等

②.浓淡表示:

初试:数字图像处理

clear all;
close all;

img=imread('../images/lena.ppm');
[sx sy] = size(img);
figure; imshow(img); title('lena');
g = img*2+30;
figure;imshow(g);title('result');
imwrite(g,'result-1.tif');

效果

直方图 Histogram

性质

①.从直方图看图像的统计信息

②.图像信息量可根据直方图计算:

其中h(i)为灰度值i的归一化直方图,即灰度值i的像素在图像中所占面积比

用途:

①.作为图像数字化的参数

②.作为分割图像的阈值选择

③.直方图均衡化

④.计算图像信息量

⑤.直方图规定化

灰度统计直方图 : 一个灰度所出现的次数

性质:

① 灰度直方图表述了图像的一维统计信息:不同灰度级的出现次数

② 灰度直方图与图像的对应关系:一对多

③ 子图直方图之和 = 全图直方图

④ 以下关系总成立:

     

//方法一
clear all;
close all;

img=imread('../images/lena.ppm');
[sx sy] = size(img);
h(1:256)=0; %初始化
for x=1:sx
    for y=1:sy
        k = img(x,y) + 1; %0~255 记录是 1~256
        h(k) = h(k) + 1;
    end
end
figure; plot(h); title('Lena:hist1');

//方法二
clear all;
close all;

img=imread('../images/lena.ppm');
[sx sy] = size(img);
h(1:256)=0; %初始化
h2 = imhist(img);
figure; plot(h2); title('Lena:hist2');

效果

归一化直方图:一个灰度所出现的比例(出现的概率)

计算方法: 对所有的灰度i

clear all;
close all;

img=imread('../images/lena.ppm');
[sx sy] = size(img);
h = imhist(img);
h1 = h / (sx * sy);
figure; plot(h1); title('Lena:归一化直方图');

效果:

累积直方图:

离散的信号:灰度从0开始累加

计算方法:直方图 从0开始 到当前灰度值:

   

clear all;
close all;

img=imread('../images/lena.ppm');
[sx sy] = size(img);
h = imhist(img);
vmax = 256 ; H(1:vmax)=0; H(1)=h(1);
for i=2:vmax
    H(i) = H(i-1) + h(i); 
end;
figure; plot(H); title('Lena:累积直方图');

效果:

归一累积直方图

计算方法:累积直方图 除以 像素个数

clear all;
close all;

img=imread('../images/lena.ppm');
[sx sy] = size(img);
h = imhist(img);
vmax = 256 ; H(1:vmax)=0; H(1)=h(1);
for i=2:vmax
    H(i) = H(i-1) + h(i); 
end;
H1 = H/(sx*sy);
figure; plot(H1); title('Lena:归一累积直方图');

效果:

点运算:灰度映射

由于图像的亮度范围不足或非线性会使图像的对比度不理想。采用图像灰度值变换方法,即改变图像像素的灰度值,以改变图像灰度的动态范围,增强图像的对比度。

设原图像(像素灰度值)为f(x,y),处理后图像(像素灰度值)为g(x,y),则对比度增强可表示为:

其中,T(.)表示增强图像和原图像的灰度变换函数

负片

公式:

效果:

%灰度映射 (负片) 方式一
clear all;
close all;

img=imread('../images/lena.ppm');
[sx sy] = size(img);
figure; imshow(img); title('original');
vMax = 256;
for i=1:sx
    for j=1:sy
        g(i,j)=255-img(i,j); %计算负片
    end
end
figure; imshow(g); title('result');

%灰度映射 (负片) 方式二
clear all;
close all;

img=imread('../images/lena.ppm');
[sx sy] = size(img);
figure; imshow(img); title('original');
vMax = 256;
img=im2double(img); %将0-255转为0-1
g=1-img;
figure; imshow(g); title('result');

%灰度映射 (负片) 方式三
clear all;
close all;

img=imread('../images/lena.ppm');
[sx sy] = size(img);
figure; imshow(img); title('original');
g=255-img; %计算负片
figure; imshow(g); title('result');

典型灰度映射

常见的几种灰度变换曲线

亮度调整——加亮、减暗图像

对比度调整——提高、降低对比度

 

线性变换

公式:

例子:

%方法一
f=imread('../images/lena.ppm');
figure; imshow(f); title('original');
f=im2double(f);
A=0.5;B=0.1;
g=A*f+B;
figure; imshow(g); title('result');

%方法二
f=imread('../images/lena.ppm');
figure; imshow(f); title('original');
f=im2double(f);
A=0.5;B=0.1;
[sx sy]=size(f); g=zeros(sx,sy);
for i=1:sx
    for j=1:sy
        g(i,j)=A*f(i,j)+B;
    end;
end;
figure; imshow(g); title('result');

效果

分段线性变换

目的:为了突出感兴趣目标所在的灰度区间,相对抑制哪些不感兴趣的灰度空间。

原理:进行像素点对点的,灰度级的映射

f=imread('../images/lena.ppm');
figure; imshow(f); title('original');
f=im2double(f);
A1=0.5;B1=0.1;
A2=0.1;B2=0.2;
T=0.5;
[sx sy]=size(f); g=zeros(sx,sy);
for i=1:sx
    for j=1:sy
        if f(i,j)<T
            g(i,j)=A1*f(i,j)+B1;
        else
            g(i,j)=A2*f(i,j)+B2;
        end
    end;
end;
figure; imshow(g); title('result');

效果

对数变换

灰度变换函数为对数函数;其实现的效果是扩展地灰度去,压缩搞灰度区:

其中a,b,c是按需要可以调整的参数

I=imread('../images/lena.ppm');
subplot(1,2,1);imshow(I);
I=double(I);
I2=42*log(1+I);
I2=uint8(I2);
subplot(1,2,2);imshow(I2);

效果

根据直方图设计映射

红色线使用Log;蓝色线使用Inverse log;绿色线没法搞(需要用直方图均衡化)

 

Y变换