Skip to content
This repository has been archived by the owner on Jul 31, 2022. It is now read-only.

Latest commit

 

History

History
134 lines (90 loc) · 3.69 KB

README.md

File metadata and controls

134 lines (90 loc) · 3.69 KB

py_image_registration

GitHub issues GitHub forks GitHub stars GitHub license PyPI - Downloads

该项目已移到另外一个库进行后续开发 https://github.com/hakaboom/image_registration

Image registration algorithm. Includes SIFT, ORB, SURF, AKAZE, BRIEF, matchTemplate

同时包含cuda加速(ORB, SURF, matchTemplate)

Requirements

  • 开发时使用的是python 3.8
  • opencv需要自己安装或自行编译,读取的到cv2模块就行

Installation

pip3 install py-image-registration

Example

  1. create
from image_registration import ORB, SIFT, RootSIFT, SURF, BRIEF, AKAZE, CUDA_SURF, CUDA_ORB, match_template

orb = ORB()
sift = SIFT()
# Other
# orb = ORB(nfeatures=1000, nlevels=9)
# 提取器的参数可以根据opencv文档调整
  1. MatchTemplate

模板匹配

from image_registration import match_template
from baseImage import Image, Rect

im_source = Image('test.png')
im_search = Image('star.png')

tpl = match_template()
result = tpl.find_best(im_source=im_source, im_search=im_search)
# expect output
# {
#  'rect': Rect,  # 返回一个baseImage.Rect类的识别范围
#  'confidence': 0.99 # 返回识别结果的置信度
# }
# Other
# tpl.find_best(im_source=im_source, im_search=im_search, threshold=0.8, rgb=False)
# threshold: 匹配度 0~1
# rgb: 是否判断rgb颜色


tpl.find_all(im_source=im_source, im_search=im_search)
# expect output
# {
#  {
#     'rect': Rect,  # 返回一个baseImage.Rect类的识别范围
#     'confidence': 0.99 # 返回识别结果的置信度
#  },
#  {
#     'rect': Rect
#     'confidence': 0.95
#  },
#  ...
# }
# Other
# tpl.find_all(im_source=im_source, im_search=im_search, threshold=0.8, max_count=20, rgb=False)
# threshold: 匹配度 0~1
# max_count: 最多匹配数量
# rgb: 是否判断rgb颜色
  1. keypoint detector and descriptor extractor

基于特征点的匹配

from image_registration import ORB, SIFT, RootSIFT, SURF, BRIEF, AKAZE, CUDA_SURF, CUDA_ORB

orb = ORB()
sift = SIFT()

im_source = Image('test.png')
im_search = Image('star.png')

orb.find_best(im_source=im_source, im_search=im_search)
orb.find_all(im_source=im_source, im_search=im_search)
# 返回结果MatchTemplate

Exceptions

  1. NoModuleError

模块未找到, 检查opencv库是否安装正确

  1. CreateExtractorError

创建特征提取器失败, 检查传入参数以及opencv库是否安装正确

  1. NoEnoughPointsError

当特征提取器提取特殊数量少于2时弹出异常

  1. CudaSurfInputImageError

图像大小不符合cuda_surf的要求时弹出异常opencv_surf.cuda

  1. CudaOrbDetectorError

提取特征时出现的错误,需要调整orb的初始参数(scaleFactor, nlevels, firstLevel)

  1. HomographyError

An error occurred while findHomography

  1. MatchResultError

An error occurred while result out of screen

  1. PerspectiveTransformError

An error occurred while perspectiveTransform