2017-12-15 43 views
0

우리는 리눅스에서 OpenCV를 사용하여 일반적인 8 비트 JPG를 읽고 처리합니다.리눅스에서 12 비트 jpg를 변환하는 방법

이제 특정 하드웨어에서 12 비트 JPG를 수신하고 있습니다. OpenCV는 이것들을 읽을 수 없으며, 내가 시도한 다른 것도 할 수 없습니다. 우리가 이것을 처리 할 수있게 해주는 유틸리티 나 라이브러리가 있나요? 아마도 8 비트 형식으로 변환할까요?

최신 libjpeg는 12 비트 JPG를 컴파일 타임 옵션으로 지원합니다. 이는 일반적인 8 비트 및 12 비트 jpg를 동시에 지원하는 소프트웨어를 작성하는 것이 쉽지 않다는 것을 의미합니다. 그러나 누군가가 이미 이것을 해결했는지 궁금합니다.

+0

아마 imagick : convert orig.jpg -depth 8 output.jpg – tcpack4

+0

이미지를로드 할 때'CV_LOAD_IMAGE_ANYDEPTH'을 (를) 설정 하시겠습니까? – emcconville

+0

convert는 "convert.im6 : 지원되지 않는 JPEG 데이터 정밀도 12'cam0_000000_0.jpg '@ error/jpeg.c/JPEGErrorHandler/316."이라고 말합니다. 이것은 이미지 magick의 Q16 (16 비트) 버전입니다. – Philip

답변

1

제안 된 기술을 몇 가지 개선했습니다. OpenCV의 어떤 라이브러리없이 어쨌든 읽을 수 있기 때문에

첫째, 당신은 PPM 파일을 방출 프로세스를 단순화하고 djpeg을 만들어 ImageMagick를에 설치하고 의존 할 필요성을 제거 할 수 있습니다. 그래서 당신의 명령이 될 것입니다 : 당신이 그렇게하면 당신이 과정에 더 컬러 해상도를 유지할 수 있도록

둘째
djpeg > result.ppm < some12bitBadBoy.jpg 

, 실제로하는 16분의 12 비트 PPM 파일을 가져! 사람들을위한

identify -verbose result.ppm 

Image: a.ppm 
    Format: PPM (Portable pixmap format (color)) 
    Mime type: image/x-portable-pixmap 
    Class: DirectClass 
    Geometry: 227x149+0+0 
    Units: Undefined 
    Type: TrueColor 
    Endianess: Undefined 
    Colorspace: sRGB 
    Depth: 12-bit     <--- 
    Channel depth: 
    Red: 12-bit     <--- 
    Green: 12-bit     <--- 
    Blue: 12-bit     <--- 
    Channel statistics: 
    Pixels: 33823 
    Red: 
     min: 514 (0.125519) 
     max: 4095 (1) 
     mean: 2350.62 (0.574022) 
     standard deviation: 1102.04 (0.269119) 
     kurtosis: -1.39076 
     skewness: 0.13609 
     entropy: 0.971255 
    Green: 
     min: 305 (0.0744811) 
     max: 4095 (1) 
     mean: 1453.69 (0.354991) 
     standard deviation: 852.147 (0.208095) 
     kurtosis: 2.42348 
     skewness: 1.77043 
     entropy: 0.918006 
    Blue: 
     min: 213 (0.0520147) 
     max: 4095 (1) 
     mean: 1309.16 (0.319698) 
     standard deviation: 890.453 (0.217449) 
     kurtosis: 2.74961 
     skewness: 1.92239 
... 
... 

다른 도비 12 비트 JPEG를 찾기 위해 노력하고, 나는 결국 한 here을 발견 .


또 다른 제안은, 워크 플로우를 단순화하기 위해, 이미지 저장 영역에 파일 시스템 이벤트를 모니터링 할 수 inotify (man page)를 사용하는 수 있습니다. 따라서 새로운 JPEG가 분석을 위해 도착할 때마다 효과적으로 알릴 수 있습니다. 그러면 위의 절차를 사용하여 12 비트인지 자동으로 확인하고 PPM 파일을 생성하고 12 비트 JPEG를 디스크의 다른 고정 영역으로 옮깁니다. 그것을 다시 참조해야합니다.

Mac을 사용하는 경우 fswatch이며 자작 나무과 함께 설치할 수 있습니다.

+0

필자가 피하고 싶었던 12 비트 libjpeg 컴파일이 필요하지만 PPM에 대한 통찰력은 유효하고 유용합니다. 수락 됨. – Philip

+0

죄송합니다. 더 직접적인 것을 생각해 낼 수 없었습니다. 인터넷을 돌아 다니며 더 좋은 점이 있다면 핑 소리를 낼 것입니다. 프로젝트에 행운을 빌어 요! –