본문 바로가기

2020/027

보간 성공! bilinear interpolation으로 검색해보면 기본 개념에 대해서 잘 나오고 왜곡 보정도 검색하면 잘 나오는데... 이것을 두 개를 내 상황에 맞게 잘 합치면서 동시에 결과를 잘 내려다 보니!! 엄청 헤맸다. 결론은 bilinear interpolation은 아래 링크를 주로 참조하였고 https://m.blog.naver.com/PostView.nhn?blogId=dic1224&logNo=220841171866&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F 영상처리(OpenCV) Bilinear interpolation (양선형보간법) : c++ 구현 영상처리(OpenCV) Bilinear interpolation (양선형보간법) : c++ 구현 [참고] .. 2020. 2. 25.
uchar *가 가리키는 일부 데이터를 uint 또는 ulong으로 캐스팅할 때 와나.. 엄청 헤맸네. uchar *data가 2560*1920 bayer format의 데이터를 가리킨다고 했을 때, 데이터는 가령 GBGBGB.... RGRGRG.... .... 이런 식으로 들어올 것인데... 여기서 맨 처음 주소의 GBGB (0123 주소번호) 을 uint (4byte) 데이터로 캐스팅하면 어떻게 될까? uint ui = *(uint *) data; 먼저 data의 0번 주소부터 3번 주소까지 GBGB 0123를 헥사로 표현해보자. 0x00112233 (여기서 각 숫자는 실제 데이터가 아닌 주소의 번호) 그렇다면, ui의 데이터를 헥사로 표현하면 ? 0x33221100 이 된다................... 뒤집혔어!!!!!!!!!!!!!! 이것 때문에 헤맴... 주의하시랏! .. 2020. 2. 18.
와.. 왜곡보정 엄청 헤맸네 물결 모양으로 결과물이 나오는 이유는 입력 영상 자체가 이상했기 때문!!!!!!!! 입력 영상이 이상했던 것은 RGRGRGRG GBGBGBGB 위에서 어차피 Sub2 이미지로 쓸거면 GBGB 라인의 G값은 건너뛰었어야 했는데! 그걸 사용한다고 생각한 것도 틀렸고 그리고 실제로는 RGRGRG의 G와 그 다음줄 RGRGRG의 R을 사용해서 이미지를 만들었던것!!!!!!!!!!!!!!1 암튼 찾아내서 다행 ㅠㅜㅠ 2020. 2. 18.
왜곡 보정의 잘못된 이해 void Undistortion::makeLookUpTable() { int width, height, x, y, px, py, level, i, i2, i3, i4; // Set lut table without interpolation for (level=MIN_LEVEL; level 나는 여기서 0이 들어가길래 ......... 이게 물결모양 만드는 원인이라고 생각함.. } } } } } 물결모양을 만드는 이유는 어떤 x, y에 대해 distortPixel(px, py)를 통해 px, py를 구하면 그 값이 같은 경우가 존재. 예를 들어 x, y가 3, 2 일때 px, py가 4, 5인 경우와 x, y가 4, 3 일 때 px, py가 4, 5인 경우가 존재. 그렇다면 결론적으로 주위 픽셀이 같은 값을.. 2020. 2. 18.