1043_오필리아_베이그란스 Large.jpeg

nano_test_00008_ Large.jpeg

nano_test_00011_ Large.jpeg

나노바나나로 생성시에는 약간 비율이 뒤틀리고, 색이 바뀌는 문제가 종종 생깁니다.

비율 찾기

로직은 간단히 말해, canny로 변환 후 scaleX, scaleY, translateX, translateY (sx, sy, tx, ty) 를 찾는 루프를 돌리는 것입니다.

  1. 짧은 변을 맞춥니다. (긴 변도 상관없음)

    scale.png

  2. 색감 보정 MSE 방식으로 할 것이기 때문에, 후술할 LAB 방식으로 색감을 매칭합니다. (그러지 않으면 반례들이 발생합니다)

    coarse best.png

  3. Canny로 변환

    Canny로 변환하지 않아도 계산 가능하나, grayscale (1D) 이나 RGB(3D) 일때 비교해야 하는 픽셀 수보다 canny일때 비교할 픽셀 수가 현저히 적으므로 효율적입니다.

    Canny로 변환하지 않아도 계산 가능하나, grayscale (1D) 이나 RGB(3D) 일때 비교해야 하는 픽셀 수보다 canny일때 비교할 픽셀 수가 현저히 적으므로 효율적입니다.

  4. 원본 이미지 기반으로 정답지 (transform map) 생성

    MSE를 매번 하려면, 각 edge 점마다 원본 edge 점 중 가장 가까운 걸 찾아 거리 계산해야 하는데, 그 비용비 비쌈. 미리 Distance를 계산해놓은 맵을 만들면, 그냥 그 위치에서의 distance값을 바로 반환받을 수 있음.

    MSE를 매번 하려면, 각 edge 점마다 원본 edge 점 중 가장 가까운 걸 찾아 거리 계산해야 하는데, 그 비용비 비쌈. 미리 Distance를 계산해놓은 맵을 만들면, 그냥 그 위치에서의 distance값을 바로 반환받을 수 있음.

  5. Coarse 탐색

    큰 스텝으로 대강대강 계산

    큰 스텝으로 대강대강 계산

  6. Fine 탐색

    가장 점수가 낮았던 (거리가 가까운) Coarse를 기준으로 꽤 꼼꼼히 재계산.

    가장 점수가 낮았던 (거리가 가까운) Coarse를 기준으로 꽤 꼼꼼히 재계산.

  7. 그래프화 하면 다음과 같음.

    graph.png