Кто-нибудь получил правильную матрицу гомографии из VNHomographicImageRegistrationRequest? - PullRequest
0 голосов
/ 24 декабря 2018

Я бьюсь головой об стену, пытаясь получить правильную матрицу гомографии из VNHomographicImageRegistrationRequest.

Я могу правильно применить сгенерированный OpenCV с простым металлическим warpkernel, как подробно описано в WWDC17 510:

float2 warpHomography(float3x3 h, destination dest) {

    float3 homogeneousDestCoord = float3(dest.coord(), 1.0);
    float3 homogeneousSrcCoord = h * homogeneousDestCoord;
    float2 srcCoord = homogeneousSrcCoord.xy / max(homogeneousSrcCoord.z, 0.000001);
    return srcCoord;
}

Скажем, матрица гомографии OpenCV:

        let rows = [
        simd_float3( 9.24742537e-01,  2.00638564e-04, 7.00462355e+01),
        simd_float3( -8.56721959e-03, 1.01871539e+00, -3.09751182e+01),
        simd_float3( -1.50501456e-04,  1.37902991e-04, 1.00000000e+00)
    ]

Чтобы правильно применить OpenCV, сгенерированный с помощью warpkernel, мне пришлось сделать следующее (см. 1 для справки):

    // where 480 is the image height
    let rows_c = [
        simd_float3( 1,  0, 0),
        simd_float3( 0, -1, 480),
        simd_float3( 0,  0, 1)
    ]
    let c = float3x3(rows: rows_c)

    let rows_H = [
        simd_float3( 9.24742537e-01,  2.00638564e-04, 7.00462355e+01),
        simd_float3( -8.56721959e-03, 1.01871539e+00, -3.09751182e+01),
        simd_float3( -1.50501456e-04,  1.37902991e-04, 1.00000000e+00)
    ]

    H = float3x3(rows: rows_H).inverse
    H_mat = c * H * c

Однако мне еще предстоит увидеть VNHomographicImageRegistrationRequestвыводить то, что имеет смысл (я пробовал даже изображения с применением простых известных преобразований - например, простые повороты, переводы), но я получаю матрицы, которые не имеют смысла (по крайней мере, для меня).Например, для той же пары изображений, что и выше, я получаю:

1.1050268     -0.034095053     -5.877033
0.06516277     1.031036       -14.215689
0.0001372757  -7.1084425e-05    1.0312284

Кто-нибудь действительно мог использовать выходной файл VNHomographicImageRegistrationRequest?Я что-то пропустил?Я сомневаюсь, что это ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...