用Python和OpenCV计算原始图像的高斯金字塔, 计算原始图像的高斯差分金字塔(DoG),计算原始图像的拉普拉斯金字塔(LoG),分别给出三段代码,并显示结果
时间: 2024-03-09 18:48:22 浏览: 86
好的,以下是计算原始图像的高斯金字塔、高斯差分金字塔和拉普拉斯金字塔的Python代码,并显示结果:
```python
import cv2
# 读取原始图像
img = cv2.imread('image.jpg')
# 高斯金字塔参数设置
ksize = (5, 5) # 高斯核大小
sigma = 1.6 # 尺度因子
levels = 5 # 金字塔层数
# 计算高斯金字塔
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转为灰度图像
pyramid = cv2.buildPyramid(gray, (cv2.INTER_NEAREST, cv2.INTER_NEAREST), maxLevel=levels, borderType=cv2.BORDER_CONSTANT, borderValue=0)
# 显示高斯金字塔结果
for i in range(levels):
cv2.imshow(f'Gaussian level{i+1}', pyramid[i])
cv2.waitKey(0)
cv2.destroyAllWindows()
```
```python
import cv2
# 读取原始图像
img = cv2.imread('image.jpg')
# 高斯差分金字塔(DoG)参数设置
ksize = (5, 5) # 高斯核大小
sigma1 = 1.6 # 尺度因子
sigma2 = 0.5 # 尺度因子
levels = 5 # 金字塔层数
# 计算高斯差分金字塔(DoG)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转为灰度图像
pyramid = cv2.buildPyramid(gray, (cv2.INTER_NEAREST, cv2.INTER_NEAREST), maxLevel=levels)
dog = []
for i in range(levels-1):
dog.append(cv2.absdiff(pyramid[i], pyramid[i+1]))
# 显示高斯差分金字塔结果
for i in range(levels-1):
cv2.imshow(f'DoG level{i+1}', dog[i])
cv2.waitKey(0)
cv2.destroyAllWindows()
```
```python
import cv2
# 读取原始图像
img = cv2.imread('image.jpg')
# 拉普拉斯金字塔(LoG)参数设置
ksize = (5, 5) # 高斯核大小
sigma = 1.6 # 尺度因子
levels = 5 # 金字塔层数
# 计算拉普拉斯金字塔(LoG)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转为灰度图像
pyramid = cv2.buildPyramid(gray, (cv2.INTER_NEAREST, cv2.INTER_NEAREST), maxLevel=levels)
log = []
for i in range(levels-1):
log.append(cv2.subtract(pyramid[i], cv2.pyrUp(pyramid[i+1])))
log.append(pyramid[-1])
# 显示拉普拉斯金字塔结果
for i in range(levels):
cv2.imshow(f'LoG level{i+1}', log[i])
cv2.waitKey(0)
cv2.destroyAllWindows()
```
你可以将`'image.jpg'`替换为你自己的图片路径。运行后会显示高斯金字塔、高斯差分金字塔和拉普拉斯金字塔的每一层结果。
阅读全文