郑 磊
(苏州科技大学 江苏 苏州 215009)
数字图像处理在计算机领域扮演着重要的角色,然而噪声问题常常影响图像属性的质量和恢复效果,需要进行改善。 图像的分割和提取重要对象信息是数字图像处理中的关键任务。 为了解决这些问题,研究人员提出了各种综合性方法和技术,涉及计算机技术、光学微电子技术和数学分析原理等领域[1]。 矩阵实验室(matrix laboratory,MATLAB)软件是一种流行且适用的科学计算软件,由MathWorks 公司开发。 它提供了丰富的数值计算和图形处理工具,可广泛应用于通信、控制系统滤波器设计、非线性控制设计、系统识别、神经网络、优化、模糊逻辑、信号处理、鲁棒控制等领域。 本文旨在研究数字图像处理的方法和技术,结合MATLAB 软件的优势和特点,探讨如何利用数值计算、图形处理和相关工具改善图像质量、实现图像恢复、分割和提取重要对象信息。 同时,还将讨论开发人员在使用过程中常遇到的格式问题和函数代码错误,并提供解决方案,以推动科学技术和数学应用软件的发展和流行。
随着电子计算机技术的发展,人们得以使用计算机来进行图像处理。 发展初期应用领域很小,仅应用于航空、航天和国防领域。 20 世纪70 年代,数字图像处理逐渐被应用于医学成像领域,代表的有X 射线、计算机断层扫描(computed tomography, CT)、 磁共振成像( magnetic resonance imaging,MRI)等。 同时,数字图像处理也开始应用于印刷、出版和图像传输等领域。 20 世纪80 年代,数字图像处理开始广泛应用于工业、商业和娱乐业领域,如数字摄影、数字电视和数字图像处理软件等。 20 世纪末期,随着计算机性能的进一步提高,数字图像处理技术也得到了更好的发展,开始应用于虚拟现实、模拟仿真、安全监控等领域。 到了21 世纪,智能交通、人脸识别、指纹识别、生物医学工程等领域都能看到图像处理的身影[2]。 当今,随着人工智能、深度学习、大数据等技术的发展,数字图像处理技术又迎来了新的机遇和挑战。
数字图像处理技术有很多优点,主要包含以下四方面:(1)再现性好。 数字图像处理能够实现高度再现性,通过相同的算法和参数,可以准确地复制和重现处理结果。 数字图像处理的一致性对于科学研究、医学影像等领域非常重要。 (2)处理精度高。 数字图像处理具有出色的处理精度,可以对图像进行准确的操作和分析。 通过复杂的算法和数学模型,可以提高图像的质量和清晰度。(3)适用面宽。 数字图像处理适用于各个领域,包括自然图像、医学影像、卫星图像等。 它可以处理静态和动态图像数据,应对不同类型的图像需求。 (4)灵活性高。 数字图像处理具有高度灵活性,可以根据特定需求进行定制和调整。 它可以与其他领域的技术相结合,进一步提高处理效果和功能。
数字图像处理作为一种应用广泛的技术,其前景和未来发展非常广阔。 其发展方向主要包括以下四个方面:(1)智能化。 数字图像处理正朝着智能化方向发展。 通过人工智能和机器学习技术,数字图像处理系统能够实现更高级的功能,如图像识别、目标检测和自动分析。 智能化的数字图像处理将推动自动化和智能决策的发展。(2)应用领域广泛。 数字图像处理在各个领域都有广泛的应用,如医学影像、卫星图像、工业质检等。 未来,数字图像处理将在无人驾驶、虚拟现实等领域进一步扩大应用,为更多行业提供解决方案。 (3)技术融合。 数字图像处理将与其他技术融合,形成更强大的处理能力。 例如,与计算机视觉、机器学习和大数据分析等技术结合,可以实现更复杂、多模态的图像处理任务。 技术融合将推动数字图像处理技术的创新和应用。 (4)高精度、高效率。 数字图像处理追求高精度和高效率。 通过优化算法和硬件设备,数字图像处理可以实现更准确、可靠的图像分析和处理结果,并在更短的时间内完成复杂任务。
MathWorks 公司是一个专注于应用领域的科技公司,他们开发了一系列强大的工具包,以解决信号处理、神经网络、图像处理和金融等领域的问题。 其中,小波分析在图像处理中扮演着重要角色。 通过使用MATLAB 支持C语言和Fortran 的高级语言的功能,用户可以轻松编写和访问核心程序。 MATLAB 的简单逻辑习惯使得问题的解决变得方便和快捷,并且可以通过扩展的方式满足用户的需求。 用户可以调用和修改函数,添加自定义的函数,并使用图像处理工具箱来进行数字图像处理。 这些功能使得MathWorks 的工具包成为许多科学专家和工程师的首选。
近年来,图像处理工程成像技术中起着至关重要的作用。 MATLAB 6.x 作为一种广泛使用的数据处理工具,具有强大的图像处理功能,可以读取、写入和显示各种图像文件格式。 研究人员利用MATLAB 的算法研究和测试,能够有效地处理复杂的数字图像处理任务。 它不仅节省了研究人员的时间,还提高了搜索效率。 此外,MATLAB还提供了统计数据和图示功能,使得图像处理的结果更加直观和易于理解。 总体而言,MATLAB 6.x 在图像处理领域具有强大的功能,为研究人员在复杂图像处理任务中提供了可靠的支持。 因此,研究人员选用该软件来完成以下的图像处理工作。
为了在某些图像操作中能够顺利进行,MATLAB 支持多种图像类型的运行,如灰度图像、索引图像、三基色图像和二进制图像等。 然而,由于某些操作对图像类型有特定要求,因此需要对相关的图像类型进行转换[3]。
下面是MATLAB 实现的源程序及注解,输出结果如下:
graypic=rgb2gray(pic); %彩色图转灰度图
bwpic=im2bw(graypic); %灰度图转为二值图
imshow(graypic); %显示灰度图
Imshow(bwpic); %显示二值图
输出结果如图1、图2 所示。
图1 灰度化图像
图2 二值化图像
图像增强是指按特定的需要突出一幅图像中的某些信息,同时,削弱或去除某些不需要的信息的处理方法。其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。 图像增强技术主要有
伽马变换,也称为指数变换、幂次变换或幂律变换,是常用的非线性变换之一。 其主要作用在于图像校正,修正过高或过低灰度的图像,以增强图像对比度。
代码实现过程如下:
% 读取图像
image =imread('picname.jpg');
% 灰度变换和伽马校正
gray_image =rgb2gray(image);
gamma_2 =imadjust(gray_image, [], [], 2);
gamma_0_5 =imadjust(gray_image, [], [], 0.5);
% 显示原始图像、灰度变换图像和伽马校正图像
figure;
subplot(1, 3,1), imshow(gray_image), title('原始图像');
subplot(1, 3, 2), imshow(gamma_2), title('Gamma=2');
subplot(1, 3, 3), imshow(gamma_0_5), title('Gamma=0.5');
处理结果如图3 所示。
图3 灰度图经过不同gamma 值伽马校正得到的图像
从处理结果可以看出,图像经过伽马变换后,其亮度和对比度会发生变化。
当伽马值大于1 时(如伽马值为2),图像的暗部将被拉伸,使得暗部细节更加突出,同时亮部细节可能会被压缩,导致整体图像的对比度增强,暗部更亮,而亮部相对变暗。
当伽马值小于1 时(如伽马值为0.5),图像的亮部将被拉伸,使得亮部细节更加突出,同时暗部细节可能会被压缩,同样会导致整体图像的对比度增强,亮部更亮,而暗部相对变暗。
所以,伽马变换可以用于调整图像的亮度和对比度,使得图像更适合特定的显示或分析需求。 不同的伽马值会产生不同的效果,可以根据实际情况选择合适的伽马值进行调整。
自然灰度图像经均匀量化后,其直方图通常集中在较低灰度值的区域,导致图像的黑暗区域细节变得模糊。 为了增强图像并凸显细节,可以通过裁剪直方图来扩展原始图像的灰度范围或调整灰度分布,以增加对比度。 这样可以明确图像的细节,实现图像增强的目标。 代码实现过程如下:
% 读取图像
image =imread('picname.jpg');
% 灰度图像处理
gray_image =rgb2gray(image);
% 整体直方图均衡化
global_histeq_image =histeq(gray_image);
% 局部直方图均衡化
window_size =[64, 64]; % 局部窗口大小
local_ histeq _ image = adapthisteq (gray _ image, 'NumTiles', [8, 8], 'ClipLimit', 0.02, 'Distribution', 'rayleigh');
% 显示原始图像、整体直方图均衡化图像和局部直方图均衡化图像
figure;
subplot(1, 3,1), imshow(gray_image), title('原始图像');
subplot(1, 3, 2), imshow(global_histeq_image), title('整体直方图均衡化');
subplot(1,3,3), imshow(local_histeq_image), title('局部直方图均衡化');
图像对比如图4 所示。
图4 灰度图全局直方图均衡化和局部直方图均衡化图像对比
从处理结果可以看出,对于整体直方图均衡化,它会通过对整个图像的灰度级分布进行重新分配,使得图像的灰度级更加均匀地分布在整个灰度范围内。 这将增强图像的对比度和细节信息。 暗的区域会被拉伸,亮的区域会被压缩,以达到均衡化的效果。
而局部直方图均衡化是一种自适应的直方图均衡化方法,它将图像分割为多个局部区域,并对每个局部区域的直方图进行均衡化,更好地保留图像中的局部细节,并减少全局直方图均衡化可能引起的过度增强。 局部直方图均衡化可以提高图像的局部对比度,使得图像中的细节更加突出。
因此,整体直方图均衡化可以使整个图像的对比度得到增强,改善整体的亮度分布。 局部直方图均衡化则更加注重保留图像的局部细节和对比度,并且在不同的局部区域进行自适应的灰度均衡化,以获得更好的视觉效果。 两种方法都可以用于图像增强和改善图像质量。
图像平滑技术通过在空间域或频域中应用低通滤波器来减少图像中的噪声和突变点。 在空间域,使用平均值或中位数滤波器处理相邻像素,以消除灰度非常不同的噪点。 在频域,通过衰减图像的高频分量来实现图像信号的模糊。 这种技术在处理图像目标区域和边界时具有重要意义,能够改善图像的质量[4]。
代码实现过程如下:
% 读取图像
image =imread('input_image.jpg');
% 转换为灰度图像
gray_image =rgb2gray(image);
% 添加高斯噪声
noisy_image = imnoise(gray_image, 'gaussian', 0,0.02); % 添加方差为0.02 的高斯噪声
% 使用不同大小的滤波器进行图像平滑处理
smoothed_image_1 =imfilter(noisy_image, fspecial('average', 1));
smoothed_image_3 =imfilter(noisy_image, fspecial('average', 3));
smoothed_image_5 =imfilter(noisy_image, fspecial('average', 5));
% 显示原始图像和平滑处理后的图像
figure;
subplot(2, 2,1), imshow(gray_image), title('原始图像');
subplot(2, 2, 2), imshow(noisy_image), title('带噪声图像');
subplot(2, 2, 3), imshow(smoothed_image_1), title('1x1 滤波器');
subplot(2, 2, 4), imshow(smoothed_image_3), title('3x3 滤波器');
% 显示使用5x5 滤波器平滑处理后的图像
figure;
imshow(smoothed_image_5), title('5x5 滤波器');
显示结果如图5 所示。
图5 不同大小滤波器滤除高斯噪声效果图
从输出结果图可以看出,滤波器越大,对高斯噪声滤除的效果越好,见图6。
图6 均值滤波和中值滤波对高斯、椒盐噪声滤除效果对比图
均值滤波是一种线性平滑滤波技术,它采用平均值来代替像素值,以达到去除图像噪声的目的。 均值滤波的好处是操作简单且容易实现,计算速度快,缺点是对噪声的抑制效果较差,同时还会对图像的边缘和细节部分产生模糊影响[5]。
中值滤波是一种非线性滤波技术,它的原理是将像素值排序后取中间值作为当前像素的值。 中值滤波的优点是对椒盐噪声和斑点噪声有很好的抑制效果,同时不会对图像的边缘和细节部分产生模糊影响。 但是它的缺点是计算速度相对较慢。
所以,均值滤波和中值滤波各有优缺点,具体使用哪种方法取决于噪声类型和去噪要求。 在实际应用中,可以根据具体情况选择合适的方法去除图像噪声[6]。
数字图像处理是一门经过长期发展的技术,其应用前景广阔且有很多优点,因此值得深入研究。 本文通过使用MATLAB 中的数字图像处理函数,实现了便捷的图像灰度化、二值化、图像增强、图像直方图均衡化、图像平滑等处理,展现了图像处理技术的智能性、精确性和高效性。 图像信息是人们认识客观世界的重要载体,因此,数字图像处理作为处理这一载体的技术,在未来一定会引领各领域技术朝着更好的方向发展。