2012-07-02 1 views
0

나는 두 이미지를 비교하고픽셀 배열 압축

rgb(12, 54, 69) 1 4 
rgb(19, 54, 98) 4 8 
rgb(12, 54, 69) 2 9 
rgb(86, 85, 10) 9 7 

처럼 타의 추종을 불허하는 픽셀의 배열을 얻고 나는 네트워크를 통해이를 전송해야합니다. 그래서 난 할 수 압축에 내가 큰 차이의 경우 많은 혜택을 얻을 수없는 것이 간단한 압축을 의심하지만

rgb(12, 54, 69) (1, 4), (2, 9) 
rgb(19, 54, 98) (4, 8) 
rgb(86, 85, 10) (9, 7) 

. 나는 아직 어떤 테스트도하지 않을 것이다.

전체 이미지가 변경되면 새 이미지의 정상적인 JPEG 압축이 훨씬 더 작아집니다. 작은 차이가 나는 경우이 메서드는 작은 바이트 오버 헤드를 생성합니다. 각 이미지의 위에서 아래로 반복하지 않고 변경 양을 알 수있는 방법이 없습니다.

동일한 작업을 수행하는 표준 방법이 있습니까? protobuf 또는 부스트 직렬화와 Qt의 상단에 C++로 구현할 것입니다.

+0

나는 당신의 압축 알고리즘을 쓰는 것을 상당히 고려할 것이고, 당신의 압축 방법이 정말로 이익을주는지를 알기 위해 다른 이미지 유형에 대해 꽤 많은 테스트를 수행 할 것이다! 당신은 그것이 거의 없거나 어떤 유익을 제공하지 않는 인스턴스를 찾을 수 있습니다. 대부분의 경우, 당신의 방법을 사용하는 것보다, 그렇지 않으면 jpeg만을 사용하십시오. 이렇게하면 압축 프로토콜을 다른 방법으로 알려주는 정보를 추가 할 필요가 없으므로 통신 프로토콜도 간소화됩니다. 또한 크기 비교에서 추가 시간을 보낼 필요성을 완화합니다. – trumpetlicks

답변

0

이미지를 처음에는 jpeg로 압축하고이 새로운 jpeg 파일의 크기를 함수에 전달하십시오. 전달 된 크기를 초과하면 즉시 함수를 반복하면서 실패를 반환하고 jpeg를 보냅니다. 이렇게하면 기능의 끝까지 도달 할 필요가 없습니다.

그러나 먼저 현재 코드를 프로파일 링합니다. 드물게이 코드로 인해 병목 현상이 발생하는 경우,이 트래버스를 수행하기위한 원시/C 모듈을 작성하면 더 잘 처리 할 수 ​​있습니다.

물론 이것은 사용자의 기능에 소요되는 시간이 평균 JPEG 생성 시간을 초과한다고 가정합니다. 항상 그렇듯이, 최적화하기 전에 프로필, 프로필, 프로필.

+0

하지만이 픽셀 세트가 더 빠른 JPEG 생성이 아니겠습니까? 두 가지면에서 나는 여전히 비교할 필요가 있습니다. 왜냐하면 그들이 동일하면 나는 새로운 이미지를 보내지 않고 변화를 위해 유휴 상태로 앉아 있습니다. –

+0

@NeelBasu 픽셀 세트 생성이 실제로 JPEG 압축 *보다 빠르다는 것을 확인하려면 * 프로파일 링 (예 : 실험 및 측정)해야합니다. 또한 자신의 코멘트에 언급 된 나팔 소리와 같은 대부분의 경우 가치가 있는지 확인하기 위해 세트 기반 이미지 압축을 프로파일 링해야합니다. –