zoukankan      html  css  js  c++  java
  • 深度学习图像配准 Image Registration: From SIFT to Deep Learning


    What is Image Registration?


     

    Traditional Feature-based Approaches

    Keypoint Detection and Feature Description
    复制代码
    import numpy as np
    import cv2 as cv
    
    img = cv.imread('image.jpg')
    gray= cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    
    akaze = cv.AKAZE_create()
    kp, descriptor = akaze.detectAndCompute(gray, None)
    
    img=cv.drawKeypoints(gray, kp, img)
    cv.imwrite('keypoints.jpg', img)
    复制代码

    For more details on feature detection and description, you can check out this OpenCV tutorial.

    Feature Matching

    复制代码
    import numpy as np
    import cv2 as cv
    import matplotlib.pyplot as plt
    
    img1 = cv.imread('image1.jpg', cv.IMREAD_GRAYSCALE)  # referenceImage
    img2 = cv.imread('image2.jpg', cv.IMREAD_GRAYSCALE)  # sensedImage
    
    # Initiate AKAZE detector
    akaze = cv.AKAZE_create()
    # Find the keypoints and descriptors with SIFT
    kp1, des1 = akaze.detectAndCompute(img1, None)
    kp2, des2 = akaze.detectAndCompute(img2, None)
    
    # BFMatcher with default params
    bf = cv.BFMatcher()
    matches = bf.knnMatch(des1, des2, k=2)
    
    # Apply ratio test
    good_matches = []
    for m,n in matches:
        if m.distance < 0.75*n.distance:
            good_matches.append([m])
            
    # Draw matches
    img3 = cv.drawMatchesKnn(img1,kp1,img2,kp2,good_matches,None,flags=cv.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)
    cv.imwrite('matches.jpg', img3)
    复制代码

    Image Warping

    复制代码
    # Select good matched keypoints
    ref_matched_kpts = np.float32([kp1[m[0].queryIdx].pt for m in good_matches]).reshape(-1,1,2)
    sensed_matched_kpts = np.float32([kp2[m[0].trainIdx].pt for m in good_matches]).reshape(-1,1,2)
    
    # Compute homography
    H, status = cv.findHomography(ref_matched_kpts, sensed_matched_kpts, cv.RANSAC,5.0)
    
    # Warp image
    warped_image = cv.warpPerspective(img1, H, (img1.shape[1]+img2.shape[1], img1.shape[0]))
                
    cv.imwrite('warped.jpg', warped_image)
    复制代码


    Deep Learning Approaches

    Feature Extraction

    Homography Learning

    Their approach introduces two new network structures: a Tensor Direct Linear Transform and a Spatial Transformation Layer. We will not go into the details of these components here, we can simply consider that these are used to obtain a transformed sensed image using the homography parameter outputs of the CNN model, that we then use to compute the photometric loss.

    Other Approaches


     
    _________________________________________________________________________________________________________________________________________________
    每一个不曾起舞的日子,都是对生命的辜负。
    But it is the same with man as with the tree. The more he seeks to rise into the height and light, the more vigorously do his roots struggle earthward, downward, into the dark, the deep - into evil.
    其实人跟树是一样的,越是向往高处的阳光,它的根就越要伸向黑暗的地底。----尼采
  • 相关阅读:
    JSP 学习笔记1
    XML scriptlet 连接数据库
    JSP 定义行列数表单创建表格
    JSP_01
    JS创建表格完整
    04-基本的mysql语句
    03-MySql安装和基本管理
    02-数据库概述
    01-MySql的前戏
    爬虫系列
  • 原文地址:https://www.cnblogs.com/leoking01/p/14611959.html
Copyright © 2011-2022 走看看