Как рассчитать разрешение неискаженного изображения? - PullRequest
0 голосов
/ 20 января 2020

Неискаженное изображение обычно имеет более низкое разрешение, чем исходное изображение, из-за неравномерного распределения пикселей и (обычно) обрезки черных краев. (См. Ниже в качестве примера)

enter image description here

Таким образом, учитывая параметры калибровки камеры, например, в формате ROS

image_width: 1600
image_height: 1200
camera_name: camera1
camera_matrix:
  rows: 3
  cols: 3
  data: [1384.355466887268, 0, 849.4355708515795, 0, 1398.17734010913, 604.5570699746268, 0, 0, 1]
distortion_model: plumb_bob
distortion_coefficients:
  rows: 1
  cols: 5
  data: [0.0425049914802741, -0.1347528158561486, -0.0002287009852930437, 0.00641133892300999, 0]
rectification_matrix:
  rows: 3
  cols: 3
  data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
projection_matrix:
  rows: 3
  cols: 4
  data: [1379.868041992188, 0, 860.3000889574832, 0, 0, 1405.926879882812, 604.3997819099422, 0, 0, 0, 1, 0]

Как бы вычислить окончательное разрешение неискаженного выпрямленного изображения?

1 Ответ

0 голосов
/ 22 января 2020

Из комментария Фруцверга следующее даст эффективный ROI неискаженного изображения

import cv2
import numpy as np
mtx = np.array([
    [1384.355466887268, 0, 849.4355708515795],
    [ 0, 1398.17734010913, 604.5570699746268],
    [0, 0, 1]])
dist = np.array([0.0425049914802741, -0.1347528158561486, -0.0002287009852930437, 0.00641133892300999, 0])

cv2.getOptimalNewCameraMatrix(mtx, dist, (1600, 1200), 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...