基于边缘检测的图像拼接矫正应用设计与开发

摘要: 图像拼接是将同一场景的多个重叠图像拼接成较大的图像的一种方法,在医学成像、计算机视觉、卫星数据、军事目标自动识别等领域具有重要意义。结合边缘检测、角点检测等数字图像处理方法,完成图像矫正和拼接极具应用价值。
关键词: 边缘检测、图像拼接、数字图像处理

原理

请添加图片描述

框架组成

整体框架组成

程序后台程序采用Flask进行构建,结合React前端可视化框架,跟material-ui设计库,构建图像拼接与矫正应用平台。同时平台还尝试链接树莓派,实时展示摄得照片。(构建出的web服务平台如图3.1所示)

请添加图片描述

构建图像矫正程序

将图像上传至后台服务器,服务器需要根据图像进行处理,先需要将图像固定尺寸,后操作opencv对图像进行边缘检测。

边缘检测

def getCanny(image):
    # 高斯模糊
    binary = cv2.GaussianBlur(image, (3, 3), 2, 2)
    # 边缘检测
    binary = cv2.Canny(binary, 60, 240, apertureSize=3)
    # 膨胀操作,尽量使边缘闭合
    kernel = np.ones((3, 3), np.uint8)
    binary = cv2.dilate(binary, kernel, iterations=1)
    return binary
在边缘检测后适配原四边形点集,再进行四边形顶点排序,然后计算长宽,最后进行透视变换。
def getclipper(path):
    image = cv2.imread(path)
    ratio = 900 / image.shape[0]
    img = resizeImg(image)
    binary_img = getCanny(img)
    max_contour, max_area = findMaxContour(binary_img)
    boxes = getBoxPoint(max_contour)
    boxes = adaPoint(boxes, ratio)
    boxes = orderPoints(boxes)
    # 透视变化
    warped = warpImage(image, boxes)
    return warped

构建图像拼接程序

解压缩图像,然后检测关键点并提取来自它们的局部不变描述符。并匹配两幅图像的之间的特征。所处理的图片则需要有一定的相似性。
M = self.matchKeypoints(kpsA, kpsB,
featuresA, featuresB, ratio, reprojThresh)

匹配特征

如果匹配为None,则没有足够的匹配的关键点用来创建全景图否则有足够的匹配的关键点,用透视图变换将图像拼接在一起)将两张图像放在同一张图的左右部分,最后返回输出可视化之后的图像。

应用平台具体实践

操作与交互

图像拼接

上传相关图片1,为随机寻找的示例群山左图(如图4.1所示),上传图片2,为随机寻找的示例群山右图(如图4.2所示),点击提交,即可所得到的图像拼接图(如图4.3所示)。
图片1图片2

合并后的图片

图像矫正

上传需要进行矫正的图片,图片采用实验过程中随机选取的纸张进行拍摄(如图4.4所示),点击提交后,即可所得到的经过矫正后的图片(如图4.5所示)。显然,经过矫正后的图片在文字的具体显示和画幅上的表现更好。
请添加图片描述

程序代码

由于代码比较多,放置在了csdn上供下载使用。

下载地址

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vimtion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值