본문 바로가기

Various Developments/3D Moire Scanner4

3D Moire Scanner 개발 - 높이 맵(Height Map) 계산 이번 포스팅에서는 지난 시간 계산 했던 위상 맵에 이어 이를 활용한 최종 높이 맵을 계산하는 과정에 대해서 정리했습니다.위상 펼침(Phase Unwrapping) 지난 시간 계산했던 위상맵은 한 가지 문제점이 있습니다. 그것은 위상이 주기적으로 반복된다는 것입니다. 위상맵의 한 단면을 Profiling 해보면 다음과 같습니다.위상과 높이의 관계는 서로 비례 관계라서 위 위상처럼 주기적으로 나타나게 되면 높이 또한 주기적으로 변하는 모습을 갖게 됩니다. 따라서 이런 주기적인 위상들을 서로 이어서 주기성을 없애야 합니다. 이것을 위상펼침(Phase Unwrapping)이라고 합니다.개념은 매우 간단해 보이나 실제 적용 시에는 2D map의 노이즈와 주변 픽셀과의 관계들도 고려해야 하는 등 상당히 고급 알고리.. 2023. 2. 10.
3D Moire Scanner 개발 - 위상 맵(Phase Map) 계산 이번 포스팅에서는 전 포스팅에서 제작한 4-frame 이미지를 이용하여 실제 대상체에 투사하고 위상맵을 얻는 과정까지의 내용을 정리했습니다. [4-fram 이미지 제작 참조]2023.01.25 - [여러가지개발/3D Scanner] - 3D Scanner 개발 - sinusoidal 패턴 만들기 3D Scanner 개발 - sinusoidal 패턴 만들기앞서 정리한 알고리즘을 적용하기 위해서는 각 frame별 물체에 의해 왜곡된 패턴이미지가 필요합니다. 그러기 위해서는 projector에 넣어줄 이미지를 먼저 만들어야 합니다. 이미지는 opencv를 이용todamfather.tistory.com투사 이미지 획득 측정에 사용할 대상으로 100원짜리 동전을 선택했습니다. 이순신 장군님의 형상이 새겨진 모양에.. 2023. 2. 1.
3D Moire Scanner 개발 - sinusoidal 패턴 만들기 앞서 정리한 알고리즘을 적용하기 위해서는 각 frame별 물체에 의해 왜곡된 패턴이미지가 필요합니다. 그러기 위해서는 projector에 넣어줄 이미지를 먼저 만들어야 합니다. 이미지는 opencv를 이용하여 생성하였습니다.sinusoidal 패턴 수식 코딩하기 sinusoidal 패턴은 sin 또는 cos 어느 것을 선택해도 상관없습니다. 사용한 수식은 아래와 같습니다.위 수식을 C++을 이용해 함수로 바꾸어봤습니다.unsigned char GetCosineValue(const int& position, const int& wavelength_px, const int& shift_phase){ float val = 255.f * cos((2.f * PI / (float)wavelength_px) * p.. 2023. 1. 25.
3D Moire Scanner 개발 - 모아레(Moire) 현상을 이용한 3차원 형상 측정의 원리 개인 개발의 첫 프로젝트로 3D scanner의 핵심 알고리즘을 구현해 볼까 합니다.  3차원(3D) 측정 알고리즘에는 여러 가지가 있겠지만 산업현장에서 보편적으로 널리 쓰이는 모아레 알고리즘을 구현하는 목표로 이 프로젝트를 시작할까 합니다. 일단은 기본 원리를 알아야 하기에 자료조사(구글링)를 통해 공부한 내용을 먼저 정리했습니다.  모아레(Moire)의 개념 모아레(Moire)란 프랑스어로 고대 중국에서 수입한 비단의 물결무늬를 일컫는 말이라고 합니다. 비단을 짤 때 직조로 짜기때문에 가로/세로 격자 모양들이 서로 겹쳐지면 시각적으로 새로운 줄무늬가 보여서 이렇게 부른다고 합니다..  이런 모아레 무늬는 간단한 실험으로 확인해볼 수 있습니다. 그림판이나 ppt를 열어서 격자나 다음과 같은 모양의 패턴.. 2023. 1. 18.