欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

opencv学习笔记19:图像金字塔和图像拉普拉斯金字塔 (用于图像放大和缩小)

发布时间:2024/9/30 编程问答 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 opencv学习笔记19:图像金字塔和图像拉普拉斯金字塔 (用于图像放大和缩小) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

图像金字塔原理

图像金字塔:只不同分辨率,不同尺寸子图构成的集合。

取样
向下取样:有一个图像G0,对它重新采样,得到分辨率小些的G1,以此类推。
向上取样:有一个图像G3,然后变成像素更多的G2,以此类推。

向下取样方法

高斯卷积核:自身像素点取36,近一些的取24,越远的像素越低。最后除以像素点个数

删除偶数行列:使尺寸变为原始四分之一。
向下取样会丢失一些信息。
向上取样方法

如原始图像45,12,3,89,149。一轮向上取样后变为右边。
因为含义0,在使用卷积核时,等于一个像素点被稀释掉为原来的四分之一。所以还要乘以4使图像正常。

向下取样和向上取样是不可逆操作。无法恢复原图。

向下取样函数使用

python+OpenCV
dst=cv2.pyrDown(src)

dst:取样结果
src:原始图像

import cv2 import numpy as np o=cv2.imread("logo.png") r1=cv2.pyrDown(o) r2=cv2.pyrDown(r1) cv2.imshow("original",o) cv2.imshow("PyrDown1",r1) cv2.imshow("PyrDown2",r2) cv2.waitKey() cv2.destroyAllWindows()

向上取样函数使用

dst=cv2.pyrUp(src)
dst:取样结果
src:原始图像

import cv2 import numpy as np o=cv2.imread("lena256.bmp",cv2.IMREAD_GRAYSCALE) r=cv2.pyrUp(o) cv2.imshow("original",o) cv2.imshow("pyrUp",r) cv2.waitKey() cv2.destroyAllWindows()

放大图像会导致图像模糊

向下取样向上取样可逆性研究

研究经过一次向下和向上取样后,图像像素是否变化。

import cv2 o=cv2.imread("girl.bmp") r=cv2.pyrUp(o) r2=cv2.pyrDown(r) diff=r2-o cv2.imshow("difference",diff) cv2.waitKey() cv2.destroyAllWindows()

经过一次向上再向下后,再与原图求差,其结果见下面。可以发现经过向上向下后不能恢复原图

拉普拉斯金字塔

结果=原始图像-先向下再向上
向下:尺寸变小
向上:尺寸变大

下图信息为进行两次:
(结果1=原始图像-先向下再向上)
(结果2=结果1-先向下再向上)

import cv2 o=cv2.imread("lena.bmp") od=cv2.pyrDown(o) odu=cv2.pyrUp(od) lapPyr=o-odu o1=od o1d=cv2.pyrDown(o1) o1du=cv2.pyrUp(o1d) lapPyr1=o1-o1du cv2.imshow("lapPyr",lapPyr) cv2.imshow("lapPry1",lapPyr1) cv2.waitKey() cv2.destroyAllWindows()

总目录链接:
python3+opencv学习笔记汇总目录(适合基础入门学习)

进阶版学习笔记:
opencv进阶学习笔记10:图像金字塔和图像梯度

电气专业的计算机小白,写博文不容易。如果你觉得本文不错。请点个赞支持下。谢谢。

总结

以上是生活随笔为你收集整理的opencv学习笔记19:图像金字塔和图像拉普拉斯金字塔 (用于图像放大和缩小)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。