从小白开始,记录一下图像处理有关的知识点,方便自己随时查阅。知识点无规律,有时间可能会考虑做总结。希望路过的大佬能帮忙指出错误,助我少走弯路。

小知识点

关于频率

首先要将所谓图像频率与频率的物理学定义脱离开,否则很难理解。 图像频率是图像的一个指标而非一个参数。
图像的频率是一个分布。
将图像做二维傅里叶变换所得的频谱图,也就是图像的梯度分布图即可定义为该图像的频率。
直观表现为衡量表征图像中灰度变化剧烈程度的指标。
图像中的高频分量,指的是图像强度(亮度/灰度)变化剧烈的地方,也就是我们常说的边缘(轮廓);图像中的低频分量,指的是图像强度(亮度/灰度)变换平缓的地方,也就是大片色块的地方。人眼对图像中的高频信号更为敏感。 图像的高低频是对图像各个位置之间强度变化的一种度量方法。低频分量:主要对整副图像的强度的综合度量. 高频分量:主要是对图像边缘和轮廓的度量。如果一副图像的各个位置的强度大小相等,则图像只存在低频分量

关于图像梯度

参考链接:

  1. https://zhuanlan.zhihu.com/p/113397988
  2. https://www.cnblogs.com/pacino12134/p/11358698.html

LDR 与 HDR

关于DR——Dynamic Range(动态范围):Dynamic Range是一种用数学方式来描述某个给定场景的亮度层次范围的技术术语。最通常的解释有两种。一种是摄影界通常所说的D值(以对数值表示的场景最高亮度和最低亮度比的相对数值),通常由0-4之间的很精确的数字来表示。D值的计算公式为:Dynamic Range=log10(Max Intensity / Min Intensity)。公式中intensity是指光照强度,我们对最大亮度除以最低亮度的结果取对数,得到的结果就是动态范围的相对数值——我们摄影界所说的D值。各种景物、底片和照片都有其各自特定的D值范围。
一种是计算机图形学中通常使用的直接以场景最高亮度和最低亮度的亮度比表述的方法,如255:1

LDR 每通道 8bit / 16bit 整数运算
HDR 每通道 32bit 浮点数运算

Tone mapping

为了让图像更真实的显示在显示器上,需要Tone Mapping来辅助。所谓tone mapping就是根据场景的当前亮度,将HDR映射到LDR上,并保证图像细节不丢失,不失真。

Retinex

参考链接:https://www.cnblogs.com/sleepwalker/p/3676600.html

Retinex理论始于Land和McCann于20世纪60年代作出的一系列贡献,其基本思想是人感知到某点的颜色和亮度并不仅仅取决于该点进入人眼的绝对光线,还和其周围的颜色和亮度有关。Retinex这个词是由视网膜(Retina)和大脑皮层(Cortex)两个词组合构成的.Land之所以设计这个词,是为了表明他不清楚视觉系统的特性究竟取决于此两个生理结构中的哪一个,抑或是与两者都有关系。

Land的Retinex模型是建立在以下的基础之上的:

一、真实世界是无颜色的,我们所感知的颜色是光与物质的相互作用的结果。我们见到的水是无色的,但是水膜—肥皂膜却是显现五彩缤纷,那是薄膜表面光干涉的结果;

二、每一颜色区域由给定波长的红、绿、蓝三原色构成的;

三、三原色决定了每个单位区域的颜色。

Retinex 理论的基本内容是物体的颜色是由物体对长波(红)、中波(绿)和短波(蓝)光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均性的影响,具有一致性,即Retinex理论是以色感一致性(颜色恒常性)为基础的。如下图所示,观察者所看到的物体的图像S是由物体表面对入射光L反射得到的,反射率R由物体本身决定,不受入射光L变化。

201551506662079

Retinex理论的基本假设是原始图像S是光照图像L和反射率图像R的乘积,即可表示为下式的形式:

S(x,y)=R(x,y)L(x,y)S(x, y)=R(x, y) \cdot L(x, y)

基于Retinex的图像增强的目的就是从原始图像S中估计出光照L,从而分解出R,消除光照不均的影响,以改善图像的视觉效果,正如人类视觉系统那样。在处理中,通常将图像转至对数域,即s=logS,l=logL,r=logRs=\log S, l=\log L, r=\log R,从而将乘积关系转换为和的关系:

log(S)=log(RL)logS=logR+logLs=r+l\begin{array}{l} \log (S)=\log (R \cdot L) \\ \log S=\log R+\log L \\ s=r+l \end{array}

Retinex方法的核心就是估测照度L,从图像S中估测L分量,并去除L分量,得到原始反射分量R,即:

l=f(s)r=sf(s)\begin{array}{l} l=f(s) \\ r=s-f(s) \end{array}

函数f(x)f(x)实现对照度L的估计(可以去这么理解,实际很多都是直接估计r分量)。

单尺度Retinex 算法(SSR)

参考链接:https://blog.csdn.net/weixin_39830846/article/details/88777087

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
I=imread('test.jpg');

Ir=I(:,:,1);%提取红色分量
Ig=I(:,:,2);%提取绿色分量
Ib=I(:,:,3);%提取蓝色分量
I1=SSR(Ir); %自定义单尺度Retinex处理函数
I2=SSR(Ig);
I3=SSR(Ib);
In=cat(3,I1,I2,I3); %cat用于构造多维数组
subplot(1,2,1);imshow(I);
title('A). 原始图像');
subplot(1,2,2);imshow(In,[]);
title('B). 单尺度Retinex');

%——————————————划重点!!!!!!!!!!!!!!!!!!!!————————————————

function A = SSR(I)
G=I;
[m,n]=size(I);
I=double(I);
x0=floor((m+1)/2); % floor: 向负无穷大取整 对于复数分别对实部和虚部取整
y0=floor((n+1)/2);
c = 80;
K=1/(sqrt(2*pi)*c);
for x=1:m
for y=1:n
G(x,y)=K*(exp(-((x-x0)^2+(y-y0)^2)/(2*c^2))); %高斯函数
end
end

Gfft=fft2(G);
Ifft=fft2(I);
Lfft=Gfft.*Ifft;
L=ifft2(Lfft);

r=log(I+1)-log(L+1); %加1是为了防止对数为0时,log0没有定义

%线性拉伸,将灰度范围转换到0-255,(直接求反对数的效果不好)
MIN=min(min(r));
MAX=max(max(r));
new=(r-MIN)*255/(MAX-MIN); % 使用double型数据显示图像后像素范围变为了0-1,而不是0-255,所以会显示白色,new不要乘255可能会好
A=new;
end

直方图均衡化

参考链接:https://zhuanlan.zhihu.com/p/44918476

RGB HSI HSV

参考链接:https://blog.csdn.net/wxb1553725576/article/details/45827923

Matlab 算图像卷积

参考链接:https://www.cnblogs.com/yibeimingyue/p/10879506.html

高斯滤波

参考链接:https://blog.csdn.net/ytang_/article/details/52749497

导向滤波

参考链接:https://zhuanlan.zhihu.com/p/105965249

图像金字塔

参考链接:https://www.cnblogs.com/sddai/p/10330756.html