图像处理四个经典二维图像各自特点?真没想到

admin 海跃资讯 126 0
A⁺AA⁻

最终目标在本讲义中, 你将自学到附注:出访画素值;用零调用行列式;自学CV :: saturate_cast的作用及其管用的原因;自学有关画素切换的很棒的科学知识;提高影像光度的示例方法论注前述说明引述自托马斯·赫米达科维托娃

(Richard Szeliski)的<>那哥 影像处理常见的影像处理操作方式是两个表达式,它将两个或数个影像作为输出并聚合输出影像影像变可被视作:点操作方式符(画素切换);邻近地区(如前所述地区的)操作方式符。

画素切换在影像处理中, 每一输出画素的值仅依赖于适当的输出画素值(可能还包括许多自上而下搜集的信息或模块);这类操作方式示例包括光度修正、清晰度修正以及色调的标定和切换光度和清晰度修正三种常见清晰度修正的方法是将画素值除以或加之两个物理量:。

模块α > 0和β一般来说称为阻抗模块和谐振模块,通过这两个模块分别来控制清晰度和光度。F ( X )为源影像的画素,G ( X )为输出影像的画素。可以方便快捷地写下下列表达式:

其中i和j表示位于第i行,第j列的画素标识符C ++ (Java 版请出访:https://github.com/opencv/opencv/blob/master/samples/java/tutorial_code/ImgProc/changing_contrast_brightness_image/BasicLinearTransformsDemo.java。

Python 版请出访:https://github.com/opencv/opencv/blob/master/samples/python/tutorial_code/imgProc/changing_contrast_brightness_image/BasicLinearTransforms.py

)书名可浏览源标识符(门牌号在variations)上面的标识符执行g(i,j)=α⋅f(i,j)+β操作方式

标识符简述C ++ 使用CV :: imread读取影像并将其留存到Mat第一类中:

接下去,对该影像做许多切换,有鉴于此需要建立两个捷伊Mat第一类来放置它。此外,我们希望它具有下列特征:如上所述画素值零;与原初影像完全相同的体积和正则表达式。

cv::Mat::zeros返回两个如前所述image.size()和image.type() 的Matlab格式的零调用值。我们现在要求用户输出α和β值:

为了执行g(i,j)=α⋅f(i,j)+β操作方式,我们必须出访影像的每一画素。由于是对BGR影像进行操作方式,所以每一画素包含(B,G和R)三个值,我们必须分别出访它们。具体标识符如下:

注意(只适用于C ++标识符):我们利用 image.at(y,x)[c]来出访影像的各个画素,其中ÿ是行号, X是列号,C是B,G或R(0,1或2);由于α⋅p(i,j)+β 操作方式的值可能溢出或为非整数(如α是浮点数),我们用CV :: saturate_cast来确保该值的有效性;

最后,我们用下列方式建立窗口并显示影像。

注我们利用下列简单的命令来取代for循环来出访影像的每一画素:

cv::Mat::convertTo将执行*new_image = a*image + beta*操作方式.但是,我们想向你展示如何出访每一画素在任何情况下,这三种方法都给出完全相同的结果,但 convertTo 更加优化并且工作速度更快。

结果我们不运行标识符,设置α = 2.2和β = 50。

示例在本小节中,我们将以前学到的技巧付诸实战,通过修正影像的光度和清晰度来标定曝光不足的图片同时,自学利用伽玛标定(gamma correction)技术来标定影像的光度影像光度和清晰度修正增大(或减小) β值将加大(/减小)各个画素的清晰度。

画素值超出 [0; 255]范围之外的值将会饱和(即:大于255,或小于0的画素值将钳位到255或 0)

原初影像的浅灰色直方图中,深灰色光度= 80 GIMP直方图表示该色彩画素中每种色彩的数目深色影像的画素值将大于浅色影像的画素值,因此直方图的左半部分会出现两个峰值当添加两个恒定的偏差之后,整个直方图右移,为所有的画素增加了两个恒定的谐振。

修改模块α将修改水平轴的展幅,如果α <1中,色彩值将被压缩,其结果是影像的清晰度降低。

原影像的浅灰色直方图中,深灰色时, 清晰度GIMP <0注意,利用清晰度/光度工具Gimp获得的上述柱状图,光度工具的谐振模块β应该与之完全相同,但清晰度工具的阻抗模块α是不同的(可以从前面的直方图中看出)。

修正谐振模块β可以提高光度,但同时,影像的清晰度会下降,影像上似乎会蒙上一层轻微的面纱修正阻抗α阻抗可缓释这种效果,但是由于出现饱和,影像将失去原有明亮地区的许多细节伽瑪标定伽瑪标定利用输出值和输出映射值之间的。

非线性切换,标定影像的光度:

由于这种关系是非线性的,其效果不会影响所有的画素,最终输出将依赖于画素的原初值。

打印出不同的伽玛值(gamma)当γ 1时, 原初影像的亮区将变得更暗,整个直方图将左移纠正曝光不足的影像我们设置α = 1.3和β = 40修正上面的影像。

图: Visem的作品 [CC BY-SA 3.0],来源:维基共享资源影像的整体光度得到了改善,但可以看出: 由于色彩的画素数值饱和,图中云彩已经饱和(摄影高光修剪)我们用γ=0.4修正上面的影像

图: Visem的作品 [CC BY-SA 3.0],来源:维基共享资源由于映射是非线性的,伽马标定添加了少量的饱和效应,并且不存在前面所述方法的数值饱问题。

左边:α,β标定后的直方图;中间:原初影像的直方图;右边:伽马标定后的直方图上图比较了三幅影像(三个直方图的y值不完全相同)的直方图从中可以发现,大部分的画素值都在原初影像直方图的下部α , β修正后,由于影像出现饱和,在255 处可以观察到两个峰值,整个直方图右移。

伽玛标定后,直方图右移,影像暗地区中的画素移动的位移比在明亮地区画素移动的位移更大(见伽玛曲线图)在本讲义中,描述了三种修正影像清晰度和光度简单的方法它们只是基本技术,不能用作光栅图形编辑器的替代品!标识符

C ++ 讲义的源标识符请出访书名(门牌号在variations)伽马标定的源标识符Code:

在这里,由于一次只需要计算256 个数值,利用查找表来提高计算性能更多资源图形渲染中的伽玛标定CRT监视器的伽玛标定和影像显示数字曝光技术注:本文以C++语言标识符为例,获取Java和python版可在书名中查看:。

https://docs.opencv.org/4.5.2/d3/dc1/tutorial_basic_linear_transform.html

发表评论

发表评论:

微信扫码添加客服

微信扫码添加客服

微信扫码添加客服

微信扫码添加客服