当前位置: 首页 > news >正文

金华网站建设设计推广seo优化公司

金华网站建设设计,推广seo优化公司,云主机能干什么,wordpress 3.5OpenCV官方教程中文版 —— 图像金字塔 前言一、原理二、使用金字塔进行图像融合 前言 • 学习图像金字塔 • 使用图像创建一个新水果#xff1a;“橘子苹果” • 将要学习的函数有#xff1a;cv2.pyrUp()#xff0c;cv2.pyrDown()。 一、原理 一般情况下#xff0c;我… OpenCV官方教程中文版 —— 图像金字塔 前言一、原理二、使用金字塔进行图像融合 前言 • 学习图像金字塔 • 使用图像创建一个新水果“橘子苹果” • 将要学习的函数有cv2.pyrUp()cv2.pyrDown()。 一、原理 一般情况下我们要处理是一副具有固定分辨率的图像。但是有些情况下我们需要对同一图像的不同分辨率的子图像进行处理。比如我们要在一幅图像中查找某个目标比如脸我们不知道目标在图像中的尺寸大小。这种情况下我们需要创建创建一组图像这些图像是具有不同分辨率的原始图像。我们把这组图像叫做图像金字塔简单来说就是同一图像的不同分辨率的子图集合。如果我们把最大的图像放在底部最小的放在顶部看起来像一座金字塔故而得名图像金字塔。 有两类图像金字塔高斯金字塔和拉普拉斯金字塔。 高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的。顶部图像中的每个像素值等于下一层图像中 5 个像素的高斯加权平均值。这样操作一次一个 MxN 的图像就变成了一个 M/2xN/2 的图像。所以这幅图像的面积就变为原来图像面积的四分之一。这被称为 Octave。连续进行这样的操作我们就会得到一个分辨率不断下降的图像金字塔。我们可以使用函数cv2.pyrDown() 和 cv2.pyrUp() 构建图像金字塔。 函数 cv2.pyrDown() 从一个高分辨率大尺寸的图像向上构建一个金子塔尺寸变小分辨率降低。 # -*- coding:utf-8 -*- import cv2 as cv# 高斯金字塔 def pyramid_demo(image):level 4 # 金字塔的层数temp image.copy() # 拷贝图像pyramid_images []for i in range(level):dst cv.pyrDown(temp) # down是降采样-尺寸变小分辨率降低缩小pyramid_images.append(dst)cv.imshow(pyramid str(i), dst)temp dst.copy()return pyramid_imagessrc cv.imread(ball.png) cv.namedWindow(input image, cv.WINDOW_NORMAL) cv.imshow(input image, src) pyramid_demo(src) cv.waitKey(0) cv.destroyAllWindows() 下图是一个四层的图像金字塔。 函数 cv2.pyrUp() 从一个低分辨率小尺寸的图像向下构建一个金子塔尺寸变大但分辨率不会增加。 higher_reso2 cv2.pyrUp(lower_reso)你要记住的是是 higher_reso2 和 higher_reso 是不同的。因为一旦使用 cv2.pyrDown()图像的分辨率就会降低信息就会被丢失。下图就是从 cv2.pyrDown() 产生的图像金字塔的由下到上第三层图像使用函数cv2.pyrUp() 得到的图像与原图像相比分辨率差了很多。 拉普拉斯金字塔可以有高斯金字塔计算得来公式如下 拉普拉金字塔的图像看起来就像边界图其中很多像素都是 0。他们经常被用在图像压缩中。下图就是一个三层的拉普拉斯金字塔 # -*- coding:utf-8 -*- import cv2 as cv # 高斯金字塔 def pyramid_demo(image):level 4 # 金字塔的层数temp image.copy() # 拷贝图像pyramid_images []for i in range(level):dst cv.pyrDown(temp) # down是降采样-尺寸变小分辨率降低缩小pyramid_images.append(dst)cv.imshow(pyramid str(i), dst)temp dst.copy()return pyramid_images# 拉普拉斯金字塔拉普拉斯金字塔时图像大小必须是2的n次方*2的n次方不然会报错 def laplian_demo(image):pyramid_images cv.resize(image, (512, 512), interpolationcv.INTER_CUBIC) # 可以替换成INTER_LINEARpyramid_images pyramid_demo(pyramid_images)level len(pyramid_images) # 4 层for i in range(level-1, 0, -1): # 每次递减expand cv.pyrUp(pyramid_images[i], dstsizepyramid_images[i - 1].shape[:2])lpls cv.subtract(pyramid_images[i - 1], expand)cv.imshow(lpls_down str(i), lpls)def pyramid_demo_2(image):higher_reso2 cv.pyrUp(image)cv.imshow(pyramid, higher_reso2)return higher_reso2src cv.imread(ball.png) src2 cv.imread(lower_reso.png) cv.namedWindow(input image, cv.WINDOW_NORMAL) cv.imshow(input image, src) #pyramid_demo(src) #pyramid_demo_2(src2) laplian_demo(src) cv.waitKey(0) cv.destroyAllWindows() 二、使用金字塔进行图像融合 图像金字塔的一个应用是图像融合。例如在图像缝合中你需要将两幅图叠在一起但是由于连接区域图像像素的不连续性整幅图的效果看起来会很差。这时图像金字塔就可以排上用场了他可以帮你实现无缝连接。这里的一个经典案例就是将两个水果融合成一个看看下图也许你就明白我在讲什么了。 你可以通过阅读后边的更多资源来了解更多关于图像融合拉普拉斯金字塔的细节。实现上述效果的步骤如下 读入两幅图像苹果和橘子构建苹果和橘子的高斯金字塔6 层根据高斯金字塔计算拉普拉斯金字塔在拉普拉斯的每一层进行图像融合苹果的左边与橘子的右边融合根据融合后的图像金字塔重建原始图像。 整个过程的代码如下。为了简单每一步都是独立完成的这回消耗更多的内存如果你愿意的话可以对他进行优化 # -*- coding: utf-8 -*- import cv2 from matplotlib import pyplot as plt import numpy as npA cv2.imread(apple.png) A cv2.resize(A, (256, 256), interpolationcv2.INTER_CUBIC) # 可以替换成INTER_LINEAR B cv2.imread(orange.png) B cv2.resize(B, (256, 256), interpolationcv2.INTER_CUBIC) # 可以替换成INTER_LINEAR b, g, r cv2.split(A) A cv2.merge([r, g, b]) b, g, r cv2.split(B) B cv2.merge([r, g, b])# generate Gaussian pyramid for A G A.copy() gpA [G] for i in range(6):G cv2.pyrDown(G)gpA.append(G)# generate Gaussian pyramid for B G B.copy() gpB [G] for i in range(6):G cv2.pyrDown(G)gpB.append(G)# generate Laplacian Pyramid for A lpA [gpA[5]] for i in range(5, 0, -1):GE cv2.pyrUp(gpA[i])L cv2.subtract(gpA[i - 1], GE)lpA.append(L)# generate Laplacian Pyramid for B lpB [gpB[5]] for i in range(5, 0, -1):GE cv2.pyrUp(gpB[i])L cv2.subtract(gpB[i - 1], GE)lpB.append(L)# Now add left and right halves of images in each level # numpy.hstack(tup) # Take a sequence of arrays and stack them horizontally # to make a single array.LS [] for la, lb in zip(lpA, lpB):rows, cols, dpt la.shapels np.hstack((la[:, 0:int(cols / 2)], lb[:, int(cols / 2):]))LS.append(ls)# now reconstruct ls_ LS[0] for i in range(1, 6):ls_ cv2.pyrUp(ls_)ls_ cv2.add(ls_, LS[i])# image with direct connecting each half real np.hstack((A[:, :int(cols / 2)], B[:, int(cols / 2):]))plt.figure() plt.subplot(221) plt.imshow(A) # expects distorted color plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis plt.title(apple) plt.subplot(222) plt.imshow(B) # expect true color plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis plt.title(orange) plt.subplot(223) plt.imshow(real) # expect true color plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis plt.title(Direct_connection) plt.subplot(224) plt.imshow(ls_) # expect true color plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis plt.title(Pyramid_blending) plt.show()
http://www.zqtcl.cn/news/595762/

相关文章:

  • 网页设计与网站建设 入门必练宝安网站建设(深圳信科)
  • 黄石网站开发joomla 宠物网站模板
  • 网站建设公司成就需要详细填写
  • 培训机构网站如何建设商务网站建设目的
  • 好看响应式网站模板制作商城公司
  • 网站的主题有哪些专业做律师网站的公司
  • 大连做网站 选领超科技网站建设公司的成本有哪些方面
  • 文章网站是怎么做的宁波网站建设lonoo
  • 做网站学cdr吗企业年金险是什么意思
  • 芜湖炎黄做的网站北京高端网站公司哪家好
  • 帮人做网站一定要先收费网站构建免费
  • 营销型网站的优缺点如何在腾讯云做网站
  • 现在做网站怎么样网站运营与管理规划书
  • 国际物流公司网站建设有关应用网站
  • 网站后台维护技能娱乐公司网站模板
  • 有建网站的公司吗p2p理财网站开发要求
  • 做私单的网站高端html5网站设计工作室织梦模板 dedecms5.7
  • 视频网站切片怎么做如何做网站结构及栏目策划
  • 公司和网站备案查询龙江网站建设公司
  • 建一个平台网站需要多少钱安徽网站建设大全
  • 做网站接广告网站注册页面怎么做
  • 西安建站价格表电脑做视频的网站比较好
  • 建筑中级职称查询网站百度指数功能模块
  • 建设网站只慧聪网怎样做网站友情链接
  • 德阳网站开发dedecms5.7装饰公司网站模板
  • 下步我院将建设网站信息保密浙江温州网络公司
  • 一键建站网站seo关键词快速排名介绍
  • 自己做网站 什么wordpress博客文章加密
  • 怎样做音视频宣传网站wordpress 推送
  • 网站图片上传代码专业的企业进销存软件定制