通过图像配准中所得的变换矩阵反向求取外接矩形在样本图中的坐标,并截取样本图中包含缺陷部位的ROI区域
时间: 2023-05-28 15:05:06 浏览: 215
图片上ROI区域矩形框的选取
步骤如下:
1. 根据图像配准所得的变换矩阵,求其逆矩阵。
2. 将外接矩形的四个顶点坐标表示为齐次坐标形式。
3. 将齐次坐标形式的顶点坐标乘以逆变换矩阵,得到在样本图中的坐标。
4. 根据在样本图中的坐标计算出ROI区域的左上角坐标和宽度、高度。
5. 截取ROI区域。
代码示例:
```python
import cv2
import numpy as np
# 读取参考图和样本图
ref_img = cv2.imread('ref_img.png')
sample_img = cv2.imread('sample_img.png')
# 进行图像配准
# ...
# 计算外接矩形
rect = cv2.minAreaRect(points)
box = np.int0(cv2.boxPoints(rect))
# 将顶点坐标表示为齐次坐标形式
pts = np.array([[p[0], p[1], 1] for p in box], dtype=np.float32)
# 计算逆变换矩阵
inv_mat = np.linalg.inv(transform)
# 将顶点坐标乘以逆变换矩阵
sample_pts = np.dot(inv_mat, pts.T).T
# 计算ROI区域左上角坐标和宽度、高度
x1 = int(np.min(sample_pts[:, 0]))
y1 = int(np.min(sample_pts[:, 1]))
x2 = int(np.max(sample_pts[:, 0]))
y2 = int(np.max(sample_pts[:, 1]))
w = x2 - x1
h = y2 - y1
# 截取ROI区域
sample_roi = sample_img[y1:y1+h, x1:x1+w]
```
阅读全文