python - 打印扫描过程后如何在图像中找到相同的特征点?
问题描述
我试图在打印扫描过程之前和之后在图像中找到相同的特征点。为此,我使用了cv2.goodFeaturesToTrack
方法:
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from skimage import color, transform
import cv2
# Read image as Numpy array
image = np.array(Image.open('images/stairway512.jpg'))
# Blur image
imageBlurred = cv2.blur(image, (10, 10))
# Find 5 feature points in cropped & blurred image
points = cv2.goodFeaturesToTrack(imageBlurred, 5, 0.01, 10)
我得到的要点是:
array([[[ 62., 186.]],
[[298., 398.]],
[[ 47., 185.]],
[[298., 68.]],
[[195., 135.]]], dtype=float32)
我使用模糊是因为我认为它会最大限度地减少打印扫描过程的影响(因为我可以以相同的方式模糊扫描的图像),但我最终会得到扫描图像的不同特征点。但是,当我对扫描的图像使用相同的代码时,我得到了以下几点:
array([[[297., 403.]],
[[297., 359.]],
[[268., 359.]],
[[268., 396.]],
[[308., 65.]]], dtype=float32)
关于如何使这些观点相同的任何想法?
解决方案
通常,特征点是不稳定的,并且在您修改图像时会在位置和得分上发生变化。
取更多的特征点(比如 100,5 太小了),并通过最近邻规则将它们成对关联。这将使您更深入地了解您可以使用此检测器实现什么。
推荐阅读
- math - 如果我们只有两个操作,则找到给定数字的最小可能值
- postgresql - 将查询结果从 BigQuery 导出到 Postgres
- java - 从目录和子目录下载文件 - 使用 Java、JSP
- java - 我想从字符串中删除 '.'(dot) 字符的褪色回文
- javascript - 如何在 React 无状态组件中使用 ES6 map 函数
- javascript - 如何使未知数量的 div 平均填充所有剩余空间?
- wpf - 树视图上的工具提示
- ruby-on-rails - 如果包含 Pry 调试器语句,则函数返回不同的值
- r - session$onFlushed 搞砸了 invalidateLater
- php - 如何注释包含关闭注释分隔符的代码