2010-12-29 9 views
7

압축 알고리즘이 JPEG보다 빠르지 만 잘 지원됩니까? jpeg2000에 대해 알고 있지만, 내가들은 바에 따르면 그렇게 빨리 빠르지는 않습니다.JPEG보다 손실이 빠른 압축이 있습니까?

편집 : 압축 용.

Edit2 : Linux 32 비트에서 실행해야하며 이상적으로는 C 또는 C++이어야합니다.

+1

압축 해제 또는 압축 용? – tenfour

+0

그냥 궁금해서 왜 이미지를 압축해야합니까? 그리고 얼마나 많이 요? –

+0

@ Mark Ransom : 500Mhz CPU와 256MB RAM을 가진 작은 휴머노이드 로봇에서 UDP를 통해 PC로 보내 처리하도록 처리해야합니다. 초당 20 개 이상의 이미지를 가져와야하고 Wi-Fi 스틱이 1 초 이상 많은 데이터를 전송할만큼 빠르지 않아 JPEG를 사용하여 대역폭을 줄입니다. –

답변

3

JPEG 인코딩 및 디코딩은 으로 매우이되어야합니다. 더 빠른 알고리즘을 찾기가 힘듭니다. 속도가 느린 경우 문제는 형식이 아니라 인코더의 잘못된 구현 일 것입니다. ffmpeg 프로젝트의 인코더 인 libavcodec을 사용해보세요.

+0

JPEG 인코딩은 빠른 디코딩을 위해 설계되었습니다. 이것은 항상 빠른 인코딩을한다는 것을 의미하지는 않습니다 (사실 여러 번 인코딩하는 것이 훨씬 느립니다). –

+0

최적의 인코딩을 위해 노력하지 않으면 두 가지 모두 매우 빠릅니다. 지난 몇 년 이내의 로우 엔드 x86은 초당 30 메가 이상의 JPEG로 인코딩 할 수 있어야합니다. –

+0

비디오 인코딩 용 인코더는 속도를 최적화하도록 바인딩됩니다. 나는 MJPEG이 수년간 충분히 빠르다는 것을 알고 있지만, 나는 항상 그것을 달성하기 위해 특별한 하드웨어가 필요하다고 생각했지만. –

2

어떤 상황에서? PC 또는 휴대용 장치에서? 당신은 JPEG, JPEG2000, PNG, 그리고 ... 어있어 내 경험에서

, 즉 만세 (넓은 맥락에서 "잘 지원"이미지 유형 (손실 여부를!)

위해 관하여 그 GIF가 나간다.)

+0

지금까지 JPEG2000이 보편적이지는 않다고 말하고 싶습니다. 목록은 실제로 JPEG와 PNG입니다. –

+0

LZW에 대한 특허권은 유럽 지역에서 만료되었으므로 제한된 색상 공간을 제외하고는 GIF를 피할 실제 이유가 없습니다. 그리고 그것은 우회 될 수 있습니다 (오히려 못생긴). – onemasse

+0

임베디드 리눅스 로봇 용입니다. –

2

JPEG2000은 전혀 빠르지 않다. 그것은 jpeg로 충분히 빠르지 않은 인코딩이나 디코딩입니까? jpeg에서 4x4 FDCT 및 IDCT 만 수행하면 더 빠를 수 있습니다.

IJG libjpeg에 관한 문서를 찾기가 어렵지만, 이것을 사용하는 경우 품질 설정을 낮추면 속도가 빨라지 며 빠른 FDCT 옵션이있는 것으로 보입니다.

누군가가 libjpeg-turbo에 SIMD 명령어를 사용하고 있으며 일반 libjpeg와 호환 가능하다고 언급했습니다. 그것이 당신을위한 선택이라면, 나는 그것을 시도해야한다고 생각합니다.

+0

임베디드 리눅스 로봇에서 너무 느린 JPEG 이미지를 인코딩하는 중입니다. –

+0

@ 리차드 놉 : 바이너리? 회색이없고 색깔이없는 흑백처럼? 그것은 일을 상당히 바꿉니다. –

+0

@ Mark Ransom 바이너리 이미지를 "원시"이미지로 보았습니다. 그들은 다채 롭다. –

1

웨이블릿 기반 압축 알고리즘은 일반적으로 DCT를 사용하는 알고리즘보다 느리다. 어쩌면 JPEG XR 및 WebP 형식을 살펴 봐야 할 것입니다.

3

대상 아키텍처에서 사용할 수있는 MMX/SSE2 지침이 있습니까? 그렇다면 libjpeg-turbo을 시도해보십시오. 또는 zlib과 같은 이미지를 압축 한 다음 실제 축소 량을 다른 컴퓨터로 오프로드 할 수 있습니까? 이미지의 실제 압축 손실은 임베디드 장치 자체에서 발생해야합니까?

+0

libjpeg-turbo의 라이센스는 상업용 또는 실제/실제 오픈 소스 프로젝트의 경우 lgpl = 적합하지 않습니다. –

+0

'zlib' 압축은 jpeg 압축보다 몇 배 느립니다. –

+0

png는 zlib 압축을 사용합니다. zlib는 임베디드로 고통 스럽습니다. 코드는 실제로 32/64 비트 클린이 아니고 크로스 컴파일이 좋지 않을뿐 아니라 기본 구성에서 많은 양의 RAM이 필요합니다. 당신이 어떻게 내장되어 있는지에 달려 있습니다. –

1

전체 이미지 충실도가 필요하지 않은 경우 이미지를 작은 이미지로 간단하게 조정할 수 있습니다. 모든 2x2 블록을 단일 픽셀로 평균화하면 크기가 매우 빠르게 1/4로 줄어 듭니다.

+0

다운 스케일링을 위해 극도로 최적화 된 코드를 작성하지 않는다면,'libavcodec'로 jpeg 압축을 수행하는 것이 다운 스케일링 코드보다 시간이 덜 걸릴 것입니다. –

+0

@R, 내가 매우 쉽게 매우 최적화 될 수 있다고 제안한 알고리즘이 아닌가? –

+0

네가 asm으로 작성했다면, 그렇지만 적어도 현재의 컴파일러 기술로는 libavcodec의 jpeg 인코더를 이길 수있는 순수 다운 C 구현이 의심 스럽다. –

관련 문제