山大计算机视觉实验3

实验过程中遇到和解决的问题:

(记录实验过程中遇到的问题,以及解决过程和实验结果。可以适当配以关键代码辅助说明,但不要大段贴代码。)

实验3.1:对比度调整

•设计一个Sigmoid函数,实现对图像的对比度调整;

–使用opencv窗口系统的slider控件,交互改变Sigmoid函数的参数,实现不同程度的对比度调整;

问题1:设计怎样的sigmoid函数进行变换:

解决:

首先对于sigmoid函数,我设计为如下,这里的sigmoid函数将一个输入值x映射到[0, 1]之间的区间。a和b分别是用于调整sigmoid函数形状的参数:

其中,a和b是常数,用于控制函数的形状和位置。当a越大时,sigmoid函数的“陡峭程度”越高,即函数在中心点处的斜率越大,同时函数在中心点处的取值也越接近于1。而当b越大时,sigmoid函数的中心位置向右移动,即函数在x轴正方向上的偏移量增大。这里我只交换改变参数a,固定参数b。

问题2:该怎样对图像进行对比度变化:

解决:

我将原始图像img进行了一次克隆,以便对其进行修改,同时保留原始图像的副本。在接下来的循环中,我对每个像素的每个通道分别进行了Sigmoid函数变换。具体来说,我首先将像素值缩放到[0, 1]之间,然后将其作为Sigmoid函数的输入,得到输出值。最后,我将输出值再次缩放到[0, 255]之间,并将其作为像素值重新赋值给图像。

问题3:改变过程中出现了颜色失真的情况。

解决:

在这里我们使用了saturate_cast函数,该函数可以确保像素值在[0, 255]之间。这是因为在进行Sigmoid函数变换之进行的过程中,输出值可能会超出[0, 255]的范围,如果不进行限制,就可能会导致图像的颜色失真或者出现其他异常情况。

实验3.2:背景相减

•对图像I和对应的背景图B,基于背景相减检测I中的前景区域,并输出前景的mask.

•分析你的方法可能产生误检的情况,并上网查阅背景相减的改进方法,设法改进结果。

•测试数据见群文件bgs-data.zip

问题4:基于背景相减的前景检测方法怎么实现:

解决:

可以通过以下步骤来实现:

预处理:将图像I和背景图B进行预处理,包括灰度化、滤波、二值化等操作,以便于后续的计算。

背景减法:将背景图B从图像I中减去,得到一张差值图D。在差值图中,前景区域的像素值通常较高,而背景区域的像素值通常较低。

阈值分割:对差值图D进行二值化处理,得到一张二值图M。在二值图中,前景区域被标记为白色像素,而背景区域被标记为黑色像素。

后处理:对二值图M进行后处理,包括去除小的噪点、填充孔洞、膨胀和腐蚀等操作,以便于得到更准确的前景区域。

问题5:怎么消除噪声

解决:

我们首先读取了一张待检测的图像和一个背景图像,然后使用absdiff函数计算了差值图,使用threshold函数对差值图进行了阈值分割,得到了一张二值图。为了消除噪声,我们使用了开运算和闭运算操作,分别用来去除小的噪点和孔洞,并对二值图进行膨胀和腐蚀操作,以便于得到更准确的前景区域。

问题6:方法可能产生误检的情况

解决:

对于基于背景相减的前景检测方法,可能会产生以下误检情况:

光照变化:当图像中的光照发生变化时,可能会导致背景图和当前图像之间的差异增大,从而导致前景检测误检。

背景移动:当背景移动时,可能会导致当前图像中的前景被错误地检测为背景。

动态背景:当背景中存在动态物体时,可能会导致前景检测漏检或误检。

问题7:上网查阅背景相减的改进方法。

解决:

1.动态阈值法:在背景相减的过程中,通常需要设置一个阈值来判断当前像素是否为前景。传统的方法是将阈值设为一个固定的值,但是这种方法对光照变化和场景变化比较敏感。因此可以采用动态阈值法,根据当前像素的背景模型和方差来动态地调整阈值。

2.基于颜色和纹理的方法:在某些情况下,前景物体的颜色和纹理特征可以帮助区分前景和背景。因此可以采用基于颜色和纹理的方法来进行前景检测,通过提取颜色和纹理特征,训练一个分类器来判断当前像素是否为前景。

3.基于运动分析的方法:在视频监控系统中,前景物体通常是通过运动来检测的。因此可以采用基于运动分析的方法,对视频序列进行光流分析和目标跟踪,来检测前景物体。

4.前景形态学分析:在检测到前景区域之后,可以采用形态学分析的方法,对前景区域进行进一步的处理,以消除小的噪点、填充孔洞、提取前景边界等操作。

5.多模型融合:将多个前景检测模型进行融合,可以提高前景检测的准确率和鲁棒性。例如,可以同时采用基于背景相减的方法、基于运动检测的方法、基于纹理分析的方法等多种方法来检测前景。

6.深度先知法:深度先知法是一种针对背景相减误检的改进方法,该方法首先对背景图像进行处理,将其转换为深度图像,然后通过深度先知算法来检测前景。该方法可以有效地减少背景相减误检的问题。

7.基于混合高斯模型的方法:基于混合高斯模型的方法是一种经典的背景建模方法,该方法可以自适应地建立多个高斯分布来描述背景的统计特征。通过对当前图像进行高斯分布拟合,可以检测出前景区域。

其中简单方法具体改进代码如下:

改进后的代码和之前的代码相似,只是在背景相减后添加了高斯滤波和膨胀操作,并在二值化处理后添加了形态学操作。这些操作都是为了提高前景检测的准确性,进一步去除误检和漏检的情况。

高斯滤波的作用是平滑图像并去除噪声,可以用于在背景图像和当前图像上消除不必要的细节和噪声,从而减少误检。高斯滤波的核大小和标准差都可以根据实际情况进行调整,一般情况下,核大小为奇数,标准差越大,滤波效果越明显。

膨胀操作可以使图像区域更加连续,进一步减少误检和漏检。膨胀操作将图像中的白色像素扩张,黑色像素不变,可以使白色区域更加连续,从而减少前景中的空洞和噪声。

形态学操作可以进一步去除误检和漏检。形态学操作包括膨胀、腐蚀、开运算、闭运算等,可以通过改变核大小和形状来实现不同的效果。在本例中,我们使用了开运算和闭运算来去除前景中的噪声和空洞。

开运算是先进行腐蚀操作,再进行膨胀操作,可以去除前景中的小噪点和细节。

闭运算是先进行膨胀操作,再进行腐蚀操作,可以填充前景中的小空洞和细节。

这些操作都可以根据实际情况进行调整,以得到更好的效果。

结果分析与体会:

实验3.1:对比度调整

实验3.1的代码实现了一个基本的对比度调整功能,使用了Sigmoid函数对图像进行了变换,同时利用了OpenCV的窗口系统和滑块控件,提供了交互式的用户界面,使得用户可以方便地调整参数,实时查看效果。

下面是原图:

这里是调整对比度的窗口系统,此时对比度为0:

接下来逐渐增大对比度,看看图像怎么变化:

对比度为5:

对比度为10:

对比度为15:

实验3.2:背景相减

下面是测试数据的最终结果,都经过了不断的阈值参数调优,且每张图的最佳阈值基本都不一样:

1、sigmoid函数总结:

sigmoid函数常用于机器学习中的神经网络模型中,用于将任意实数映射到[0,1]之间的概率值,其具有良好的数学性质和计算效率。

在这里,使用sigmoid函数来实现对图像的对比度调整。具体来说,将每个像素的像素值作为sigmoid函数的输入,调整sigmoid函数的参数,然后将输出值作为像素值进行修改。这样可以使得较低的像素值得到更大的增强,而较高的像素值则得到更小的增强,从而实现对比度的调整。

注意,在实现sigmoid函数时,使用了标准的数学库函数exp()来计算自然指数的值。同时,为了避免计算过程中出现溢出或者精度损失的问题,对sigmoid函数的输入进行了标准化处理,将像素值缩放到[0,1]之间。这样,我们可以保证sigmoid函数的输出值在[0,1]之间,从而避免像素值的溢出或者失真。

总的来说,sigmoid函数是一种常用的非线性函数,在机器学习、信号处理、图像处理等领域都有广泛的应用。在本例中,使用sigmoid函数来实现对比度调整功能,利用了其良好的形状调节能力,实现了对图像的有效处理。

2、

每张图片的背景相减最佳阈值不一样是因为不同的图片所处的环境、光照、背景复杂程度、拍摄角度等因素都不同,这些因素会对背景相减的效果产生影响。

在背景相减中,阈值的选择会影响前景和背景的分离程度,过低的阈值会产生大量的噪点和假阳性,而过高的阈值会漏检一些真实的前景区域,因此需要根据不同的场景选择合适的阈值。

在实际应用中,可以通过调整阈值来得到最佳的前景检测结果。另外,为了进一步提高检测的准确性,也可以采用一些改进的背景建模方法,如自适应背景建模、基于深度学习的方法等,从而减少对阈值的依赖性,提高背景相减的效果。

3.、

对比度调整和背景相减是计算机视觉中常用的两种图像处理方法。对比度调整可以增强图像的视觉效果,使得图像更加清晰、明亮、鲜艳。而背景相减则可以检测出图像中的前景目标,对于视频分析、行人检测、车辆跟踪等应用具有重要的意义。

对比度调整通常通过改变图像像素的灰度值来实现,而具体的调整方式包括线性变换、非线性变换等。在实际应用中,可以通过交互式的方式,让用户通过滑动条或者其他界面元素来调整图像的对比度。

背景相减是一种基于帧间差分的前景检测方法,常用的算法包括基于帧差法、基于混合高斯模型、基于自适应背景建模等。但是,背景相减也存在一些问题,例如光照变化、背景变化、噪声干扰等,容易产生误检测。

为了解决这些问题,可以采用一些改进方法,例如使用自适应背景建模、形态学分析、深度学习等方法。自适应背景建模可以根据当前图像来动态地更新背景模型,形态学分析可以消除噪点、填充孔洞、提取前景边界等操作,深度学习可以提高前景检测的准确率和鲁棒性。

总之,对比度调整和背景相减是计算机视觉中非常基础的两种图像处理方法,对于实际应用具有重要的意义,但是在实际应用中需要注意其优缺点,选择适合的方法来处理具体的问题。

猜你喜欢

转载自blog.csdn.net/qq_50213874/article/details/129702021