首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python cv2图像金字塔

Python cv2图像金字塔
EN

Stack Overflow用户
提问于 2016-04-26 14:57:56
回答 1查看 2.5K关注 0票数 4

试图实现著名的橙/苹果金字塔混合(cv2图像金字塔)。

注意:这两个图像的形状都是307x307。

但是,由于结果图像由于cv2.subtractcv2.add中的裁剪值(如cv2对numpy矩阵算法的研究中所述)而变得模糊,所以我使用了numpy算法代替了StackOverflow:拉普拉斯金字塔后的重建图像与原始图像不同中的建议。

我通过在一幅图像上执行金字塔来测试这一点,使用金字塔构建的结果图像具有相同的最大、最小、平均像素值,而不是使用cv2算法。

然而,在金字塔级别7上,结果图像得到一个红色点的“噪声”,而在第9级,结果图像得到大量绿色像素噪声。第6、7、9级图片--印古尔相册

知道为什么会发生这种事吗?金字塔的9层绿色噪音,我想说是因为图像低于1x1的形状。但是7层金字塔上的红点呢?

  • 编辑:添加的代码 numberOfPyramids =9#为A和B图像生成高斯金字塔GA = A.copy() GB = B.copy() gpA = GB gpB = GB用于i in xrange(numberOfPyramids):GA = cv2.pyrDown( GA ) GB= cv2.pyrDown(GB) gpA.append(GB) gpB.append(GB) #为A和B图像生成拉普拉斯金字塔lpA = [gpAnumberOfPyramids - 1] lpB = [gpBnumberOfPyramids - 1] (numberOfPyramids- 1,0,-1):geA = cv2.pyrUp(gpAi )dstsize = np.shape(gpAi-1):2) geB = cv2.pyrUp( gpBi,dstsize = np.shape(gpBi-1):2) laplacianA = gpAi -1- geA,如果i != 1。减去(gpAi-1,geA) laplacianB =gpBi-1- geB,如果i=1。减去(gpBi-1,geB) lpA.append(laplacianA) lpB.append(laplacianB) #现在在每个级别的LS = [] in zip,lb中添加左半和右半的图像。lpB):_,cols,_= la.shape ls = np.hstack((la:,:cols / 2,lb:,cols /2 :)) LS.append( LS ) #现在在xrange(1,numberOfPyramids )中为i重构ls_ =LS(1,numberOfPyramids):ls_ = cv2.pyrUp( ls_,dstsize = np.shape( LSi) :2) ls_ =ls_+ LSi (如果i != numberOfPyramids-1其他cv2.add(ls_,LSi)cv2.imShow)ls_) (cv2.wawKey()
EN

回答 1

Stack Overflow用户

发布于 2016-05-02 15:12:57

在阅读了关于拉普拉斯金字塔的原始文章后,我发现我误解了这种方法,我们可以在没有模糊的情况下完全重建原始图像,因为我们使用了额外的pix信息。裁剪值确实会导致模糊。好吧,现在我们又回到起点:)

因此,您发布的代码仍然是裁剪值,我建议您使用int16保存拉普拉斯金字塔,而不是使用cv2。希望它能成功。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36868641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档