数码照片究竟是什么——数字图像简介||之晓光学

百科   2024-11-28 21:01   陕西  

只要从事与光学相关的研究,无论是镜头设计还是算法开发,都离不开“图像”这一核心概念。从人类在洞穴壁画中记录生活,到今天高分辨率的摄影与视频技术,图像始终是信息表达和记录的关键载体。随着科技的不断进步,图像的表现形式经历了从模拟到数字的重大变革。20世纪初期,胶片摄影的兴起推动了模拟图像技术的蓬勃发展,成为当时记录影像的主流手段。然而,到了20世纪下半叶,随着计算机的普及和数字化工具的发展,数字图像逐渐取代模拟图像,成为现代社会中的主要形式。

本文将围绕“数字图像”的主题展开探讨。首先,我们将解释图像的基本概念,以及数字如何表示图像;接着,通过几个简单的图像处理算法,帮助读者更直观地理解数字图像的工作原理。希望通过本文,能够带领读者深入理解数字图像的重要性,以及其背后的技术驱动力和发展意义。


Part1


图像的概念

图像是一种二维或多维的视觉信息表示形式,它通过将物理世界中的光学信息转换为可视化的形态,传递空间分布的明暗、颜色或其他特征。图像获取与记录的历史贯穿于人类文明的发展历程,从最早的洞穴壁画到现代的数字摄影,经历了以下几个主要阶段。

绘画是最早的图像记录形式,如壁画和书籍插图,通过人工绘制的方式传递信息。这一阶段依赖于人的主观感知,图像表现力受限于绘画技术和材质。17世纪光学系统的发展,如针孔相机和单透镜相机,为图像的获取提供了物理基础。1839年,达盖尔发明的银版摄影术标志着现代摄影的开端。随后,胶片相机成为模拟图像记录的主流工具。可以被视觉感知的物理信息通过相机直接记录在胶片上,胶片经过冲洗即可还原出人眼看到的图像。

光学设计案例——美能达35mm-70mmF/#3.5镜头

20世纪中期,电子设备(如显像管和摄像机)的发展推动了实时图像捕获和显示技术的进步,特别是在电视、医学影像等领域发挥了重要作用。随着计算机技术的崛起,图像的数字化处理和存储成为可能。这一过程为今天的数字图像奠定了基础。

与模拟信号和数字信号一样,所谓数字图像,即用一系列离散的数值去代替物理的图像记录方式(图像就是一种信息)。在数学上,我们可以用一个二维函数来描述图像,其中,f(x,y)表示图像中每个位置(x,y)的像素值,具体内容取决于成像系统的类型。例如,对于灰度图像,像素值通常是光强的标量;对于彩色图像,像素值由多个通道(如RGB)组成的向量表示。(大家可以想想,对于红外图像,这里的数字信号对应的是什么物理量)

数字图像的产生过程主要包括两个步骤:采样和量化。采样即将连续的光学信号(如光强分布)在空间上离散化,形成有限的采样点。采样点的密度(如分辨率)决定了图像的空间细节(因此探测器像元大小决定了镜头设计需要达到的分辨率要求)。量化将每个采样点的光学信号值转换为离散的数值表示,通常用二进制编码。量化的精度(如位深)决定了图像的色彩和光强的细腻程度(例如我们常说的动态范围)。通过这两个步骤,数字图像将真实世界的连续光学信号转化为计算机可处理的离散数据。

【成像光学基础】光学系统中的调制传递函数(MTF)曲线

CCD光电探测器的原理

数字图像在物理上代表了一种对光场信息的离散化描述。它的本质是对物体表面反射或自发光信息的记录,因此包含了场景的亮度分布、颜色特性和纹理细节。与胶片这种物理记录方式相比,数字图像具有易于处理,易于融合,易于储存和传输等优点,但是目前的光电传感器分辨率还是受到半导体材料和工艺的限制。但总的来说,数字图像的出现不仅改变了图像记录的方式,还为图像处理和信息挖掘打开了新天地。
相机标定与畸变图像校正
传统图像处理基础——边缘检测



Part2


图像的数字量化

以黑白图像的灰度量化为例,灰度量化是将连续的灰度值映射为离散的灰度级别的过程,是数字图像处理中的重要步骤。在数字图像中,像素的灰度值通常用整数表示,范围由量化位数决定。例如,常见的8位灰度图像,其灰度值范围为0,2550, 2550,255,共有256个可能的灰度级。
自然界中的光强等信息可以认为是连续的,但是计算机存储信息的空间是有限的。很多时候我们需要减少灰度值的取值范围,从而降低图像数据的存储需求或适应特定处理需求。例如,将原始图像从8位量化到4位时,灰度值范围变为[0,15]可以有效减少存储空间,但可能会导致图像细节损失。
以下是一个用于实现灰度量化的MATLAB函数,该函数可以将输入的灰度图像量化到指定的位数N

代码示例

灰度量化:

function outputImg = Glreduce(inputImg, N)

% Glreduce: 将输入图像的灰度级别减少到 N 位

% inputImg: 输入图像路径

% N: 目标量化位数

% 示例: Glreduce('C:\Users\华硕\Pictures\IMG_8600.jpg', 2)


    i = imread(inputImg);    % 读取图像

    f = rgb2gray(i);         % 转换为灰度图像

    f = uint8(f);            % 确保图像数据类型为 uint8

    

    % 检查位数输入是否有效

    if N < 1

        error('N 必须大于或等于 1');

    end

    

    % 计算量化步长

    d = double(2^(8 - (N - 1)));  

    

    % 灰度量化

    ft = (f / d) * d;  

    

    % 显示原图与量化后的图像

    subplot(1, 2, 1);

    imshow(f);

    title('原始灰度图');

    subplot(1, 2, 2);

    imshow(ft);

    title(['量化到 ', num2str(N), ' 位的灰度图']);

    

    outputImg = ft;  % 输出量化后的图像

end


代码运行后输出的结果如下,通过这个案例,希望大家可以直观的理解什么是数字图像。
【成像光学基础】平板玻璃会引入像差吗
【成像光学基础】色差的计算与矫正

Part3


一个简单的数字图像处理案例

数字图像处理其实就在我们日常生活中,不知道大家是否用过PS或者其他专业一点的修图软件,在修图的时候,这些软件往往会给我们提供各种工具,例如调整图片的亮度,色温等。同时这些修图软件也会给我们提供直方图作为参考,我们可以在直方图中去判断这张图片的曝光有什么问题。


直方图是一种常用的数据可视化工具,用于表示某组数据的分布情况。它通过将数据分为若干个区间,并统计每个区间中的数据数量(频率)来绘制柱状图。在图像处理中,直方图通常用来表示图像灰度值的分布,即统计每个灰度值(例如8位灰度图像的0-255,对应黑到白)的像素数量。
直方图是图像灰度分布的直观表现:如果直方图的分布集中在低灰度区(靠近0),图像会显得较暗;集中在高灰度区(靠近255),图像会显得较亮。分布过于集中(例如,灰度值集中在128左右),则图像的对比度较低,难以分辨细节。在数字图像处理中,分析直方图有助于判断图像质量:对比度不理想的图像往往直方图分布较窄,通过均衡化,可以拉宽灰度值分布范围,提升图像的视觉效果。
直方图均衡化是一种基于像素灰度分布的对比度增强技术。其核心思想是重新分配灰度值的概率密度,使图像的灰度直方图在目标范围内尽可能均匀分布,从而增强图像的细节表现力。这种方法特别适用于对比度较低的图像,例如光照条件差或动态范围有限的场景。
下面是一个简单的可以用来生成直方图的matlab函数,大家可以参考,同时也给出了检验程序和相应的执行效果。

代码示例

直方图函数:

function H=my_hist(im)

%H=my_hist(im)的输入im为灰度图像(灰度值0-255),输出的H256维向量

%获取图像尺寸:M=行数,N=列数

[M,N]=size(im);

h=zeros(1,256);

%初始化直方图为256维全0向量

%循环语句实现灰度统计

for i=1:256

for m=1:M

for n=1:N

if im(m,n)==i-1

h(i)=h(i)+1;

end

end

end

end

H=h;

End


测试程序

I=imread('cameraman.tif');

H=my_hist(I);

figure;

subplot(2,1,1);imshow(I),title('灰度图像');

subplot(2,1,2);bar(H),title('直方图');


直方图均衡化:

function im_out= my_histeq(im_in)

%im_out = my_histeq(im_in)输入Im_in与输出im_out为灰度图像

% 灰度值0-255

%my_histeq('cameraman.tif')

%读取图像

I=imread(im_in);

[M,N]=size(I);

number=M*N;

%显示原灰度图像和直方图

figure('NumberTitle', 'on', 'Name', '原灰度图像');

subplot(2,1,1);imshow(I),title('灰度图像');

subplot(2,1,2);imhist(I),title('直方图'); 

h=zeros(1,256);

h=imhist(I);

%根据累加公式建立灰度映射关系

t=zeros(1,256);

for i=1:256

t(i)=h(i)/number;

end

ts=zeros(1,256);

for j=1:256

for p=1:j

ts(j)=ts(j)+t(p);

end

end

ts=255*ts;

%将原图通过映射变换为新图像

for i=1:M

for j=1:N

I(i,j)=uint8(ts(I(i,j)));

end

end

%输出结果

figure('NumberTitle', 'on', 'Name', '均衡化处理结果')

subplot(2,1,1);imshow(I),title('灰度图像');

subplot(2,1,2);imhist(I),title('直方图');

end


Part4


总结

本文围绕基本概念、物理含义及基本处理技术,直观的解释了数字图像是什么。从图像的定义和历史演进,到灰度量化与直方图分析的具体实现,我们逐步揭示了数字图像处理的核心原理,并通过 MATLAB 案例展示了如何实际应用这些技术来提升图像质量和分析能力。

最后总结一下:数字图像的本质是光学信号的离散化表达,其产生过程包括采样与量化两个关键步骤。通过这两个步骤,我们能够将连续的光学世界转化为计算机可处理的离散数据。希望文中所举的代码和例子能够帮助非计算机背景的读者理解这一日常生活中常见的事物,也希望能帮助各位从事光学领域的读者加深对图像的理解。

最后,还是谢谢各位看到这里。您的点赞、在看、转发就是我更新的动力,如果对您有帮助,可以在下面赞赏作者哦。拜托啦,这对我真的很重要。

对本文中提到的内容有任何疑问或者需要,可以加下方微信交流。

近期其他精彩内容:

【成像光学基础】直观的解释什么是球差||之晓光学

一文搞懂棱镜与光栅的色散特性差异||之晓光学

如何学习光学设计,浅谈我的个人体会(附推荐书单) | 之晓光学

如何用Zemax仿真高斯光束的传播

微纳光学(七)——浮雕型微纳光学元件的加工

【光设教程】十分钟学会内窥镜光学系统设计

END

更多内容请到之晓光学公众号主页

广告/咨询/合作/科研成果推广等,请联系微信号: lgs810975

之晓光学
发一点光学科普和DIY小知识,发一点没营养的生活感悟,纯纯日常向,想学知识也许也行
 最新文章