TIFF 이미지 프로세싱 하기,, 질문 있습니다.
다름이 아니라, TIFF 형식의 이미지 파일을
이미지 프로세싱하여, 특정 좌표의 Gray 값을 가져오려고 합니다.
간단하다면 간단하다고 볼 수도 있겠습니다만,
생각보다 어떻게 잘 해결이 되지를 않네요, :(
무엇보다 가장 큰 문제점이, 이 TIFF 파일이 16bit gray 값을 가지고 있다는 것입니다.
여기저기 검색을 해 보았는데 16bit gray 값을 가지는 TIFF의 이미지 프로세싱에
관한 자료를 찾기가 힘들었습니다.
처음에는 CxImage라는 이미지 처리 관련 라이브러리를 가지고 작업하였었는데,
이 라이브러리에서는 24bit Color 와 8bit Gray 정도만을 지원하네요,,
라이브러리 소스를 받아서 살펴봤는데 bitCount에 1, 4, 8, 24 만 있고,
16이 존재하지를 않는것 같습니다.
제가 잘 못 알고 있는 것 일수도 있겠구요.
16bit gray 처리가 가능하다고만 나와있는 상용 라이브러리는 몇백만원을 넘어가네요 ㅠ
CxImage에서도 읽고 등등의 작업은 가능하였습니다만,
읽고 getPixelGray 로 값을 가져와보면 실제로 가지는 값은 8bit, 255까지의 값만을
가지고 있네요.
그 외의 방법으로 이 TIFF 파일이 비압축 파일이니,
그냥 단순 무식으로 파일을 읽어서 헤더부분을 제외하고
좌표를 지점의 두 바이트, 16bit 씩 끊어서 읽어오면 되지 않을까 하고
5.0 과 6.0에 관한 TIFF Spec 파일을 다운받았는데요,
이 자료에는 그냥 헤더에 관한 설명 정도 밖에 없는것 같네요.
그냥 간단히 "몇 바이트까지 헤더고, 어디서부터 쭉~ 데이터 부분이다,,"
와 같이 아주 쉽게 TIFF 파일 포맷에 관한 자료가 있다면 좋을텐데요,,ㅠㅠ
혹시 위와 같이 TIFF 파일을 이미지 프로세싱 해 보신 분이나,
파일 포맷에 관한 자료를 가지신 분 있으시면,
작은 도움도 감사히 받겠습니다.
그럼 혹시 모르니 미리 감사 드리며,
모두들 좋은 하루 되시길 바라겠습니다. (- -) (__)
직접 TIFF화일을
직접 TIFF화일을 로드하는 부분을 만들어보시기 바랍니다.
머 압축되지 않은 raw data라면 더더욱 굳이 다른것을 구할필요를 느끼기 어려울 듯 하군요.
만약 첨이라 좀 어려우시다면...
bmp file 을 로드하는 부분을 만들어보시기 바랍니다.
Windows 혹은 MFC 에서 제공하는 라이브러리를 사용하지 않고,
단순히 header의 struct만 가지고 한번 만들어보심이...
한번 해 보면 TIFF는 쉽게느껴질듯...
로드하는것만 만들고나면 세이브하는루틴은 식은죽 먹기 입니다.
더구나 16bit gray level 이면 linux,ms-windows 어디서도 직접적으로 지원하지 않습니다.
머 직접적이라기보다, 아예 지원하지 않는다고 보는게 맞을겁니다.
8 bit gray level 을 적당히 필요한 부분 scaling해서 사용하셔야 할 겁니다.
너무 화일을 찾아서 보려고만 하지 마시길.
만약 그 화일에 버그가 있다면, 스스로 짠것은 고칠 수 있지만.
남의것은 대강 감으로 찍는 정도밖에 안될 겁니다. 명백한 버그가아니면...
만약 분석에 자신 있으시다면, CxImage 라이브러리를 분석해 보는것도 도움이 될 듯 하네요. 그 라이브러리의 화일 로드 루틴을...
혹시 석사시라면 영상처리 쪽 전공하고 계신듯 한데.
그런 비교적 간단한 코딩은 스스로 할 수 있어야 하지 않을까요???
WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra
답변 감사드립니다..^-^
하하,, 답변 감사드립니다,,^^
거기다 따끔한 질책까지,, (- -) (__)
문제는 어제 밤에 해결했습니다.
기존에 짜여져 있던 코드를 제가 받아서 수정해야 하는 작업이었는데
기존에 CxImage라는 라이브러리를 사용해서 만들어 놨기에
제가 너무 라이브러리에 몰두 해 있었던거 같네요,,
저도 차선책으로 직접 파일을 로드 해볼까 했었는데
spec 파일 좀 읽어보다 너무 내용이 방대하고
저에겐 쓸모없는 부분이 많아서 잠시 다른 해결책을 찾고 있었습니다^^;;
결론은 직접 Hex Editor로 tif 파일을 읽어서 분석해 보고,,
그냥 C 파일 입출력으로 해결했습니다^^;;
헤더 크기만큼 제외 시키고 16bit * width * height 만큼 의 데이터가
그냥 순차적으로 되어 있더군요.
픽셀값 읽기까지 성공했으니 거의 다 된것 같습니다^^;;
아,, 그런데 제가 가진 TIFF 파일은 모두 64byte 헤더에 이미지 데이터,
그리고 마지막에 알 수 없는 데이터 몇백 바이트 같은 구조였는데
모든 tif 파일은 편집이 안되겠네요,, 아직은^^;;
htna님의 조언과 정보 감사드립니다.
늘 고운 하루 되시길 바라겠습니다,,^-^
Be the Miracle!!
댓글 달기