본문 바로가기

Developement/C/C++

Look up table 생성이 이상하다 ...

 오래된 영상 처리 관련 부분을 새로 만들고 있는 중 입니다만, 아주 기가막힌 것들을 많이 보게 되었습니다. 물론 새로 만드는 것엔 이런 부분들이 존재할 공간 따위는 없겠습니다만 ...


 영상처리 가장 기본중 하나인 Look up table (LUT) 생성을 하는 알고리즘을 기존걸 새로 만드는 중 입니다만, 대체 무슨 생각으로 만들었었을까? 란 의문이 많이 들고, 사실 이걸 왜 쓰는지도 모를 것들이 있어 난관인 부분이 큽니다.


 아래의 그래프는 기존의 알고리즘을 그대로 구현 해 보면서 다시 만들어 본 것으로 ... 그나마 다 정상으로 돌아 가는 듯 한데 ..


Linear


Gamma, under slope


문득 Sigmoid 곡선을 이용한 LUT 생성이라는 걸 만들어 놨길래 이상한 수식을 쓰고 있어 검증을 해 보니 아래 이미지 처럼 알수 없는 걸 그리고 있습니다.


대체 뭘 하자는 거냐 ...


Sigmoid ?????


 만들어는 놨는데, 검증은 안해 보고, 사실 아무도 이걸 안쓰고 있었는데, 그 이유가 바로 이것 이었습니다. 대체 이런 LUT 를 만들어 쓸거면 대체 왜 만든건지 ... 그냥 Threshold 를 하는거와 별반 다를바가 없습니다.


 원래대로 라면 Wikipedia 에 있는 이미지 대로 아래 처럼 나와야 합니다만 (아래 이미지) , 대체 어떤 계산을 하면 저렇게 나오는걸 만들 수 있는건지 난해한 부분이라 하겠습니다.

  어쨋든 새로 만들다가 원래 알고리즘들이 어떤 의미에서 만들어 진 것일까란 궁금증을 해결 하면서 짚고 넘어 가고 있긴 합니다만, 이것은 못쓸 물건이다. 라는 생각만 가득 듭니다. 가득.


 그리고, 그래서 제대로 만들었습니다...



 이거 만들기가 그렇게 힘들었는지 이해가 안갑니다만 ... (기울기라던지 이런건 그냥 곱하고 빼고 하는거 하는 수준인데 ... ) 신호처리 이해 안하고 인터넷에서 뭔가 복붙 하는 친구들이 무슨 엔진 만든다고 하면 말려야 하는 이유를 한번 더 배우고 있는 하루가 아니었나 합니다.