Python3与OpenCV3.3 图像处理(十六)--图像金字塔
2017-12-12 23:44
716 查看
一、什么是图像金字塔
图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。(来源于百度)
二、图像金字塔类型
高斯金字塔
拉普拉斯金字塔
三、示例代码
import cv2 as cv
import numpy as np
def pyramin(img):
"""高斯金字塔"""
#图像金字塔层数
level=3
#复制图片
tmp=img.copy()
pyramin_img=[]
for i in range(level):
dst=cv.pyrDown(tmp)
pyramin_img.append(dst)
cv.imshow("pyramid_down_"+str(i),dst)
tmp=dst.copy();
return pyramin_img
def lapalian(img):
"""拉普拉斯金字塔"""
pyramid_images=pyramin(img)
level=len(pyramid_images)
#从高到低进行循环
for i in range(level-1,-1,-1):
if (i-1)<0:
#如果是第一幅图,则用原图进行计算
exapand = cv.pyrUp(pyramid_images[i], dstsize=img.shape[:2])
lpls = cv.subtract(img, exapand)
cv.imshow("lpls_down_" + str(i), lpls)
else:
exapand=cv.pyrUp(pyramid_images[i],dstsize=pyramid_images[i-1].shape[:2])
lpls=cv.subtract(pyramid_images[i-1],exapand)
cv.imshow("lpls_down_"+str(i),lpls)
#图像长宽必须是2的倍数,即2的n次方,如果不是将会报错
src=cv.imread('15.jpg')
cv.imshow("def",src)
cv.waitKey(0)
cv.destroyAllWindows()
图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。(来源于百度)
二、图像金字塔类型
高斯金字塔
拉普拉斯金字塔
三、示例代码
import cv2 as cv
import numpy as np
def pyramin(img):
"""高斯金字塔"""
#图像金字塔层数
level=3
#复制图片
tmp=img.copy()
pyramin_img=[]
for i in range(level):
dst=cv.pyrDown(tmp)
pyramin_img.append(dst)
cv.imshow("pyramid_down_"+str(i),dst)
tmp=dst.copy();
return pyramin_img
def lapalian(img):
"""拉普拉斯金字塔"""
pyramid_images=pyramin(img)
level=len(pyramid_images)
#从高到低进行循环
for i in range(level-1,-1,-1):
if (i-1)<0:
#如果是第一幅图,则用原图进行计算
exapand = cv.pyrUp(pyramid_images[i], dstsize=img.shape[:2])
lpls = cv.subtract(img, exapand)
cv.imshow("lpls_down_" + str(i), lpls)
else:
exapand=cv.pyrUp(pyramid_images[i],dstsize=pyramid_images[i-1].shape[:2])
lpls=cv.subtract(pyramid_images[i-1],exapand)
cv.imshow("lpls_down_"+str(i),lpls)
#图像长宽必须是2的倍数,即2的n次方,如果不是将会报错
src=cv.imread('15.jpg')
cv.imshow("def",src)
cv.waitKey(0)
cv.destroyAllWindows()
相关文章推荐
- Python3与OpenCV3.3 图像处理(二十)--圆检测
- Python3与OpenCV3.3 图像处理(六)--ROI
- Python3与OpenCV3.3 图像处理(十一)--图像直方图
- Python3与OpenCV3.3 图像处理(八)--模糊
- Python3与OpenCV3.3 图像处理(二十六)--分水岭算法(纯代码)
- Python3与OpenCV3.3 图像处理(补)--第三节补充
- Python3与OpenCV3.3 图像处理(十三)--反射投影
- Python3与OpenCV3.3 图像处理(二十一)--轮廓发现
- Python3与OpenCV3.3 图像处理(一)--环境搭建与简单DEMO
- Python3与OpenCV3.3 图像处理(十九)--直线检测
- Python3与OpenCV3.3 图像处理(十二)--图像直方图应用
- Python3与OpenCV3.3 图像处理(七)--洪填充
- Python3与OpenCV3.3 图像处理(补)--第十五节补充
- Python3与OpenCV3.3 图像处理(二)--图像基本操作
- Python3与OpenCV3.3 图像处理(九)--高斯模糊
- Python3与OpenCV3.3 图像处理(二十四)--开闭操作
- Python3与OpenCV3.3 图像处理(五)--图像运算
- Python3与OpenCV3.3 图像处理(四)--色彩空间
- Python3与OpenCV3.3 图像处理(三)--Numpy数组操作
- Python3与OpenCV3.3 图像处理(十七)--图像梯度