目录
2. 直方图(histogram)/积分直方图 (cumulative histogram) /图像的直方图均衡
1、图像的数字化+数字信号处理(ISP)
-
在sensor上经过采样、量化、编码输出如下M行N列的图像,每一个位置就是一个像素,坐标表示为:P(i,j),只有一个强度值/亮度值表示:L
-
图像的数字信号可以 由浮点数(0-1的小数)和 定点数(8、10、12bit)两种表达方式,浮点数计算量较大,一般都转换为定点数计算;
-
图像的表示可以是简单的L表达,也可以进行多维的表达P(i,j)=F(L,D,T,C....),D是深度、T是时域、C是颜色;
-
数字图像处理的基本操作:图像读取
Matlab code:
filename = 'C:\raw_plain16_test.raw’;
f=fopen(filename);
frame = fread(f,[1920 1080],’uint16=>uint16’);
imtool(frame,[]);
读取结果:
2. 直方图(histogram)/积分直方图 (cumulative histogram) /图像的直方图均衡
-
直方图:横轴代表亮度(lux),纵轴表示在每一个亮度上的像素数;
-
积分直方图:表示把前面的直方图进行积分(后项等于前面所有项的和),当最后亮度上没有像素了,积分结果就没有变化了;
-
如下可以通过直方图算出平均亮度(每个亮度上的像素数*该亮度,所有像素亮度再求和的结果/总像素数)
-
通过直方图算出该图像的对比度(对应的最高亮度和最低亮度的比值);
-
如下图前一幅直方图很窄对应的Contrast就很小,后一幅Contarast就很大;
-
数字图像处理的基本操作:直方图
Matlab code
显示直方图:
filename = 'C:\raw_plain16_test.raw’;
f=fopen(filename);
frame = fread(f,[1920 1080],'ubit16=>uint16’);
imtool(frame’,[]);
figure(11),histogram(frame);
显示积分直方图:
image = double(image);
image = image./4096;
h = histogram(frame);
cum = cumsum(h.Values);
figure(22),plot(cum);
直方图均衡(将图像的动态范围加大,使亮暗分明)
jj = histeq(image);
imtool(jj’,[]);
3、查找表lookup table
-
应用1:thresholding
如下图,通过lookup table可以设置输出的像素阈值,实现把threshold以下的值都变成0的过程;
-
查找表:取反
通过取反可以得到如下负片的效果:
Matlab code
clear all
clc
I=rgb2gray(imread(‘sample.jpg')); //将读入rgb图生成灰度图
I=imresize(I,0.1); //将图像size缩小
i=255:-1:0; //产生255-0的查找表
lut=i;
out=zeros(size( I));
for i=1:size(I,1)
for j=1:size(I,2)
out(i,j)=lut(I(i,j)+1);
end
end
imtool(uint8(I));
imtool(uint8(out));
4、Filter convolution:滤波 卷积
Matlab code:
h = ones(3,3)./9; //产生一个3*3的矩阵,做图像去噪模糊的过程,低通滤波的过程
%h=[-1 -1 -1;-1 9 -1;-1 -1 -1]; //高通滤波的过程
ff = imfilter(image,h);
imtool(ff);