JPEG를 무손실 형식으로 변환하고 품질 저하 없이 다시 변환할 수 있습니까?

JPEG를 무손실 형식으로 변환하고 품질 저하 없이 다시 변환할 수 있습니까?

이전에 JPEG 형식으로 압축된 이미지의 무손실 버전이 있다고 가정해 보겠습니다. 예를 들어 mspaint에서 JPEG 이미지를 열고 이를 BMP로 저장하면 이 프로세스에서 일부 메타데이터가 손실될 수 있다는 것을 알고 있지만 이는 제 관심사가 아닙니다.

가능한지, 그리고 이미지 품질을 잃지 않고 JPEG 형식으로 다시 변환하는 방법, 즉 모든 픽셀이 정확히 동일하다는 것을 알고 싶습니다.

편집하다:JPEG 이미지를 무손실 형식으로 변환해도 추가 품질이 제공되지 않는다는 것을 충분히 이해합니다. 제가 이렇게 묻는 이유는 다음과 같습니다. SWF 파일에서 추출된 PNG 파일이 있습니다. 원래(SWF 파일에서) 개체는 JPEG 이미지 + 알파 채널이었는데, 이 파일 크기는 내가 가지고 있는 PNG 파일에 비해 훨씬 작습니다. 원본 형식(JPEG + 알파 채널)을 원하지만 원본 SWF 파일의 복사본이 더 이상 없고(그리고 온라인에서도 찾지 못함) 추출 프로세스를 다시 실행할 수 없습니다.

답변1

본질적으로 귀하가 묻는 것은 JPEG 이미지의 디코딩 프로세스를 되돌릴 수 있는지 여부입니다. 이는 기존의 JPEG 인코더와는 매우 다른 의도이며,나는 이것을 수행하는 소프트웨어를 알지 못합니다.이미지가 인코딩된 후 변환이나 기타 수정이 적용되지 않은 한 수학적으로는 가능하지만* 프로그래밍적으로는 얼마나 어려울 수 있습니까?

첫 번째 문제는 색상 공간입니다. JPEG는 서브샘플링(픽셀 그룹에 대해 샘플링된 색상) yCbCr을 사용하는 반면 비트맵은 RGB입니다. 이러한 색상 공간 간(또한 감마 조정 시) 변환으로 인한 불가피한 손실로 인해 노이즈가 발생합니다. 해결해야 할 두 번째 문제는 JPEG가 이미지 데이터를 디코더의 출력 이미지에서 추론해야 하는 매크로블록(NxN 크기 하위 이미지)으로 기록한다는 것입니다. JPEG 형식 및 인코딩 프로세스에 대한 자세한 설명은 여기에서 확인할 수 있습니다.http://www.guillermito2.net/stegano/jsteg/

JPEG '디코딩 해제':

원본 JPEG 데이터의 근사치를 생성하려면 매크로블록의 서브샘플링, 크기 및 정렬과 이를 인코딩하는 데 사용된 DCT(이산 코사인 변환) 계수를 찾아야 합니다. 나머지는 일반적인 JPEG 인코딩 과정과 동일합니다. 떠오르는 순진한 구현 중 하나는 "교육된 추측 및 확인"입니다. 일부 일반적인 JPEG 구현이 이미지를 생성하는 데 사용되었다고 가정하고 DCT에서 'JPEG와 유사한' 결과가 나올 때까지 이를 적용해 보십시오(일반적으로 0임). 고주파).

그런 다음 원본(즉, 압축된 이미지의 비트맵)과 비교하여 최소 오류에 대한 계수를 미세 조정합니다. 이 프로세스는 여전히 오류와 파일 크기 사이의 균형을 이루지만 실제적인 목적으로는 충분히 가까워질 것입니다.

원천: 이전에는 각 개별 프레임에 JPEG과 유사한 코딩을 적용하는 DNx 및 ProRes 비디오 코덱을 검증했습니다(디코딩된 프레임을 역전시키는 소프트웨어는 매우 흥미롭고 잠재적으로 유용한 사이드 프로젝트였을 것입니다).

* 원본 JPEG 디코더를 통과할 때 동일한 출력을 생성하는 입력 데이터 세트가 있지만 디코딩 중에 정보가 손실되었기 때문에 재구성이 원본 파일의 바이트 단위 복사본(메타데이터 무시)이 될 가능성은 매우 낮습니다. 프로세스.

답변2

JPEG는 손실이 많은 형식이므로 이를 피할 수 있는 방법이 없습니다. 압축 품질이 100인 경우에도 압축 비율은 여전히 ​​2.6:1입니다(위키피디아 JPEG).

몇 가지 변형이 제안되었습니다.무손실 JPEG, JPEG 2000과 같은 것들은 인기를 끌지 못했고 지원도 매우 열악했습니다.

다음과 같은 무손실 형식으로 변환하는 것이 좋습니다. PNG, 여전히 압축되지만 손실은 없습니다.

답변3

어떤 편집기에서든 JPEG 이미지를 열고 BMP로 저장하면 파일에서 이미 사용 가능한 것보다 더 나은 품질을 얻을 수 없습니다 .jpg. 이는 낮은 비트 전송률의 mp3 파일(예: 128kbps)을 와 같은 훨씬 더 나은 형식으로 변환하여 flac어떻게든 품질이 마술처럼 복원되기를 바라는 것과 같습니다. 그렇지 않습니다.

harrymc가 말한 것처럼 이미지를 jpg로 처음 저장할 때 정보가 손실되었습니다. 이 jpg 파일에서 해당 정보를 다시 가져올 수 있는 방법은 없습니다.

손실 압축은 "파괴적"이거나 "되돌릴 수 없음"이라고도 알려져 있습니다. 보다https://en.wikipedia.org/wiki/Lossy_compression.

답변4

JPEG로 변환하면 정보가 거의 손실되었습니다. 해당 파일을 BMP로 변환하면 JPEG에 저장된 정보가 보존되지만 BMP를 다시 JPEG로 변환하면 더 많은 정보가 손실될 수 있습니다.

관련 정보