采样和量化
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变换