广州建设网站外包,互联网营销具体做什么,怎么申请小程序,网站创建器什么是图像加权和#xff1f;
所谓图像加权和#xff0c;就是在计算两幅图像的像素值之和时#xff0c;将每幅图像的权重考虑进来#xff0c;可以用公式表示为#xff1a;
dst saturate(src1 #x1d6fc; src2 #x1d6fd; #x1d6fe;)式中#xff0c;satu…什么是图像加权和
所谓图像加权和就是在计算两幅图像的像素值之和时将每幅图像的权重考虑进来可以用公式表示为
dst saturate(src1 × src2 × )式中saturate()表示取饱和值最大值。图像进行加权和计算时要求 src1 和 src2 必须大小、类型相同但是对具体是什么类型和通道没有特殊限制。它们可以是任意数据类型也可以有任意数量的通道灰度图像或者彩色图像只要二者相同即可。
OpenCV 中提供了函数 cv2.addWeighted()用来实现图像的加权和混合、融合该函数的语法格式为
dstcv2.addWeighted(src1, alpha, src2, beta, gamma)其中参数 alpha 和 beta 是 src1 和 src2 所对应的系数它们的和可以等于 1也可以不等于 1。 该函数实现的功能是 dst src1×alpha src2×beta gamma。需要注意式中参数 gamma 的值可以是 0但是该参数是必选参数不能省略。可以将上式理解为“结果图像图像 1×系数 1图像 2×系数 2亮度调节量”
应用场景
以下是一些常见的应用场景可以使用图像加权
**图像融合**将两张图像按照一定权重进行加权融合可以实现图像混合、渐变过渡和图像叠加效果。这在图像编辑、艺术设计和特效制作中常用于创建创意效果和过渡效果。
**图像修复**在图像修复和恢复任务中可以使用图像加权来合并原始图像和修复图像以实现缺失区域的修复。通过适当的权重调整可以使修复区域与周围图像保持平滑过渡以获得更自然的修复结果。
**图像混合**图像加权可用于将多张图像进行混合以实现多重曝光效果、平均图像、透明效果和图像融合等。这在摄影、艺术和图像处理中常用于创造独特的视觉效果和风格。
**视频合成**在视频编辑和合成中图像加权可以用于将多个视频帧进行混合以实现过渡效果、特殊效果和图像合成。通过调整权重可以控制视频帧之间的平滑过渡和融合效果。
图像加噪处理通过将原始图像与带有噪声的图像进行加权可以实现图像降噪和去噪效果。通过调整权重可以控制噪声的减少程度从而改善图像的质量和清晰度。
这些只是图像加权的一些常见应用场景实际上图像加权在图像处理、计算机视觉和图像合成等领域中具有广泛的应用。通过调整权重和选择合适的图像可以实现多种创造性和实用的效果。
使用数组演示函数 cv2.addWeighted()的使用。
import numpy as np
import cv2
img1np.ones((3,4),dtypenp.uint8)*100
img2np.ones((3,4),dtypenp.uint8)*10
gamma3
img3cv2.addWeighted(img1,0.6,img2,5,gamma)
print(img3)
本例中的各行代码功能如下。 第 3 行生成一个 3×4 大小的、元素数值都是 100 的二维数组对应一个灰度图像 img1。 第 4 行生成一个 3×4 大小的、元素数值都是 10 的二维数组对应一个灰度图像 img2。 第 5 行将调节亮度参数 gamma 的值设置为 3。 第 6 行计算“img1×0.6img2×53”的混合值。 运行效果
[[113 113 113 113][113 113 113 113][113 113 113 113]]对数组的操作没有直观的效果下面我们拿两张图片就行加权和的操作看看效果
示例原图 import cv2
acv2.imread(hai.png)
bcv2.imread(lena.png)
resultcv2.addWeighted(a,0.6,b,0.4,0)
cv2.imshow(dahai,a)
cv2.imshow(lena,b)
cv2.imshow(result,result)
cv2.waitKey()
cv2.destroyAllWindows()发现报错 原因是两张图片的大小不一致导致因为操作加权和 前面有讲到 大小必须一致我们重新对图片大小设置一下resize
import cv2
acv2.imread(hai.png)# 重新设置图像大小
resized_image cv2.resize(a, (512, 512))print(resized_image.shape)
bcv2.imread(lena.png)
print(b.shape)
resultcv2.addWeighted(resized_image,0.6,b,0.4,0)
cv2.imshow(dahai,resized_image)
cv2.imshow(lena,b)
cv2.imshow(result,result)
cv2.waitKey()
cv2.destroyAllWindows()运行效果 本程序使用 cv2.addWeighted()函数对图像 hai和图像 lena 分别按照 0.6 和 0.4 的权重进 行混合。 运行程序得到如图 3-2 所示的结果其中 左图是原始图像 hai。 中间的图是原始图像 lena。 右图是图像 hai 和图像 lena 加权混合后的结果图像。
反思如果我们不使用图像加权和而是使用add 函数是什么效果呢我们来看看
import cv2
acv2.imread(hai.png)# 重新设置图像大小
resized_image cv2.resize(a, (512, 512))print(resized_image.shape)
bcv2.imread(lena.png)
print(b.shape)
resultcv2.add(resized_image,b)
cv2.imshow(dahai,resized_image)
cv2.imshow(lena,b)
cv2.imshow(result,result)
cv2.waitKey()
cv2.destroyAllWindows()运行效果 从效果看明显 图像加权和的效果好多了