从尺度空间图像重建功能提取图层

时间:2019-03-26 07:48:28

标签: python-3.x numpy opencv image-processing

我目前在学校学习图像金字塔,我想学习使用python在OpenCV中执行比例空间图像重建。 我能够在线here上找到一组允许我执行重构的功能,但是我想知道作者如何获得带通拉普拉斯层。

使用该站点的三个功能,我尝试重建max_layers = 3的256x256彩色(PNG)图像(以在256、128、64和32处形成4层正方形图像)

成功之后,我尝试获取laplacian层。 我尝试打印进入重构函数的pyr值,也尝试从numpy堆栈中提取数据以另存为图层数据,但无法获得本文中所示的类似结果。 在数组上使用.shape表示我的4层都具有这种形状

(256, 256, 3)
(256, 128, 2)
(256, 64, 1)
(256, 32, 1)

我用来重建256x256 png图像的一段代码

#Pyramid and Reconstruct
dot = cv2.imread("test.png")
pyr = laplacian_pyramid(dot, max_layers=3)
recon = reconstruct(pyr)
cv2.imwrite("recon_test.png",recon)

完成上述操作后,我尝试使用以下内容获取拉普拉斯层,

#Extract Layer Data from numpyarray
layer4 = (pyr[-4])
layer3 = (pyr[-3])
layer2 = (pyr[-2])
layer1 = (pyr[-1])

#Check Array Shape of Layers
print(layer4.shape)
print(layer3.shape)
print(layer2.shape)
print(layer1.shape)

#Write layer into image
cv2.imwrite("Testlayer4", layer4)
cv2.imwrite("Testlayer3", layer3)
cv2.imwrite("Testlayer2", layer2)
cv2.imwrite("Testlayer1", layer1)

除了保存蓝灰色图像的“ Testlayer4”之外,其他图层均无法保存。

我尝试使用RGB通道和灰度来获得原始代码的作者所获得的带通拉普拉斯层,但是只能获得其中一个级别的失真图像,而其他三个层则没有图像。

第4层的图像样本

Layer 4 sample

原始图像和重建图像

The Original Image The Reconstructed Image

StackOverflow的新手,谢谢您的帮助或帮助。

0 个答案:

没有答案