가장 일반적으로 사용되는 이미지 파일 형식 이해하기

데이터 시각화를 위해 그림을 만드는 사람은 누구나 결국 컴퓨터에 그림이 저장되는 방식에 대해 몇 가지 알아야 합니다. 다양한 이미지 파일 형식이 있으며 각 형식에는 고유한 장단점이 있습니다. 올바른 파일 형식과 올바른 작업 흐름을 선택하면 그림 준비와 관련된 많은 골칫거리를 덜 수 있습니다.

제 개인적인 선호는 고품질 출판 준비 파일 및 일반적으로 가능한 모든 경우에 pdf를 사용하고, 온라인 문서 및 비트맵 그래픽이 필요한 기타 시나리오에는 png를 사용하며, png 파일이 너무 큰 경우 최종 수단으로 jpeg를 사용하는 것입니다. 다음에서는 이러한 파일 형식 간의 주요 차이점과 각각의 장단점에 대해 설명합니다.

비트맵 및 벡터 그래픽

다양한 그래픽 형식 간의 가장 중요한 차이점은 비트맵인지 벡터인지 여부입니다(표 Table 29.1). 비트맵 또는 래스터 그래픽은 이미지를 지정된 색상을 가진 개별 점(픽셀이라고 함)의 그리드로 저장합니다. 반대로 벡터 그래픽은 이미지의 개별 그래픽 요소의 기하학적 배열을 저장합니다. 따라서 벡터 이미지에는 “왼쪽 위 모서리에서 오른쪽 아래 모서리까지 검은색 선이 있고 왼쪽 아래 모서리에서 오른쪽 위 모서리까지 빨간색 선이 있습니다.”와 같은 정보가 포함되며 실제 이미지는 화면에 표시되거나 인쇄될 때 즉석에서 다시 만들어집니다.

Table 29.1: 일반적으로 사용되는 이미지 파일 형식
약어 이름 유형 응용 프로그램
pdf 휴대용 문서 형식 벡터 범용
eps 캡슐화된 포스트스크립트 벡터 범 용, 구식; pdf 사용
svg 확장 가능한 벡터 그래픽 벡 터 온라 인 사용
png 휴대용 네트워크 그래픽 비트 맵 선 그 리기에 최적화됨
jpeg 합동 사진 전문가 그룹 비트맵 사진 이미지 에 최적화됨
tiff 태그 지정된 이미지 파일 형식 비트맵 인쇄 제작, 정확한 색상 재현
raw 원시 이미지 파일 비트맵 디지털 사진, 후처리 필요
gif 그래픽 교환 형식 비트맵 정적 그림에 는 구식, 애니메이션에는 괜찮음

벡터 그래픽은 세부 정보나 선명도를 잃지 않고 임의의 크기로 확대할 수 있기 때문에 “해상도 독립적”이라고도 합니다. 그림 ?fig-bitmap-zoom에서 시연을 참조하십시오.

(ref:bitmap-zoom) 벡터 그래픽과 비트맵의 주요 차이점 그림. (a) 원본 이미지. 검은색 사각형은 (b) 및 (c) 부분에서 확대하는 영역을 나타냅니다. (b) 이미지가 비트맵 그래픽으로 저장된 경우 (a) 부분에서 강조 표시된 영역을 점차 확대한 모습. 더 확대하면 이미지가 점점 더 픽셀화되는 것을 볼 수 있습니다. (c) 이미지의 벡터 표현을 점차 확대한 모습. 이미지는 임의의 확대 수준에서 완벽한 선명도를 유지합니다.

Figure 29.1: (ref:bitmap-zoom)

벡터 그래픽에는 실제 응용 프로그램에서 문제를 일으킬 수 있고 종종 일으키는 두 가지 단점이 있습니다. 첫째, 벡터 그래픽은 표시되는 그래픽 프로그램에 의해 즉석에서 다시 그려지기 때문에 동일한 그래픽이 두 개의 다른 프로그램이나 두 개의 다른 컴퓨터에서 다르게 보이는 경우가 발생할 수 있습니다. 이 문제는 예를 들어 필요한 글꼴을 사용할 수 없고 렌더링 소프트웨어가 다른 글꼴로 대체하는 경우와 같이 텍스트에서 가장 자주 발생합니다. 글꼴 대체는 일반적으로 뷰어가 의도한 대로 텍스트를 읽을 수 있도록 하지만 결과 이미지가 보기 좋게 보이는 경우는 거의 없습니다. pdf 파일에 모든 글꼴을 윤곽선 처리하거나 포함하는 등 이러한 문제를 피하는 방법이 있지만 이를 위해서는 특수 소프트웨어 및/또는 특수 기술 지식이 필요할 수 있습니다. 반대로 비트맵 이미지는 항상 동일하게 보입니다.

둘째, 매우 크거나 복잡한 그림의 경우 벡터 그래픽은 파일 크기가 엄청나게 커지고 렌더링 속도가 느릴 수 있습니다. 예를 들어 수백만 개의 데이터 포인트가 있는 산점도에는 모든 개별 포인트의 x 및 y 좌표가 포함되며 포인트가 겹치거나 다른 그래픽 요소에 의해 가려지더라도 이미지를 렌더링할 때 각 포인트를 그려야 합니다. 결과적으로 파일 크기가 수 메가바이트가 될 수 있으며 렌더링 소프트웨어가 그림을 표시하는 데 시간이 걸릴 수 있습니다. 2000년대 초반 박사후 연구원이었을 때 당시 Acrobat 리더에서 표시하는 데 거의 한 시간이 걸리는 pdf 파일을 만든 적이 있습니다. 현대 컴퓨터는 훨씬 빨라졌고 몇 분의 렌더링 시간은 요즘 거의 들어본 적이 없지만, 그림을 더 큰 문서에 포함하고 싶고 pdf 리더가 문제가 있는 해당 그림이 있는 페이지를 표시할 때마다 멈춘다면 몇 초의 렌더링 시간조차도 방해가 될 수 있습니다. 물론 반대로 요소 수가 적은 간단한 그림(예: 몇 개의 데이터 포인트와 일부 텍스트)은 종종 비트맵보다 벡터 그래픽이 훨씬 작으며 보기 소프트웨어는 해당 비트맵 이미지보다 이러한 그림을 더 빨리 렌더링할 수도 있습니다.

비트맵 그래픽의 무손실 및 손실 압축

대부분의 비트맵 파일 형식은 파일 크기를 관리 가능하게 유지하기 위해 어떤 형태의 데이터 압축을 사용합니다. 압축에는 두 가지 기본 유형이 있습니다. 무손실 압축과 손실 압축입니다. 무손실 압축은 압축된 이미지가 원본 이미지와 픽셀 단위로 동일함을 보장하는 반면 손실 압축은 파일 크기를 줄이는 대가로 약간의 이미지 저하를 허용합니다.

무손실 압축 또는 손실 압축을 사용하는 것이 적절한 시기를 이해하려면 이러한 다양한 압축 알고리즘이 작동하는 방식에 대한 기본적인 이해가 도움이 됩니다. 먼저 무손실 압축을 살펴보겠습니다. 이미지의 넓은 영역이 단색 검은색이고 따라서 많은 검은색 픽셀이 바로 옆에 나타나는 검은색 배경의 이미지를 상상해 보십시오. 각 검은색 픽셀은 이미지의 빨강, 녹색, 파랑 색상 채널에서 0의 강도를 나타내는 0 0 0의 세 개의 0으로 나타낼 수 있습니다. 이미지의 검은색 배경 영역은 이미지 파일의 수천 개의 0에 해당합니다. 이제 이미지 어딘가에 3000개의 0에 해당하는 1000개의 연속적인 검은색 픽셀이 있다고 가정합니다. 이러한 모든 0을 쓰는 대신 필요한 총 0의 수를 간단히 저장할 수 있습니다(예: 3000 0을 쓰는 방식). 이러한 방식으로 개수(여기서는 3000)와 값(여기서는 0)이라는 두 개의 숫자만으로 정확히 동일한 정보를 전달했습니다. 수년에 걸쳐 이러한 방식의 많은 영리한 트릭이 개발되었으며 최신 무손실 이미지 형식(예: png)은 인상적인 효율성으로 비트맵 데이터를 저장할 수 있습니다. 그러나 모든 무손실 압축 알고리즘은 이미지가 균일한 색상의 넓은 영역을 가질 때 가장 잘 수행되므로 표 ?tbl-file-formats에는 png가 선 그리기에 최적화된 것으로 나열되어 있습니다.

사진 이미지는 동일한 색상과 밝기의 여러 픽셀이 바로 옆에 있는 경우가 거의 없습니다. 대신 다양한 규모의 그라데이션 및 기타 다소 규칙적인 패턴이 있습니다. 따라서 이러한 이미지의 무손실 압축은 종종 잘 작동하지 않으며 손실 압축이 대안으로 개발되었습니다. 손실 압축의 핵심 아이디어는 이미지의 일부 세부 정보가 사람의 눈에는 너무 미묘하여 이미지 품질의 명백한 저하 없이 버릴 수 있다는 것입니다. 예를 들어 각각 약간 다른 색상 값을 가진 1000픽셀의 그라데이션을 생각해 보십시오. 200개의 다른 색상으로만 그리고 인접한 5개의 픽셀을 정확히 동일한 색상으로 칠하면 그라데이션이 거의 동일하게 보일 가능성이 높습니다.

가장 널리 사용되는 손실 이미지 형식은 jpeg(표 Table 29.1)이며 실제로 많은 디지털 카메라가 기본적으로 이미지를 jpeg로 출력합니다. Jpeg 압축은 사진 이미지에 매우 잘 작동하며 이미지 품질 저하가 거의 없이 파일 크기를 크게 줄일 수 있는 경우가 많습니다. 그러나 jpeg 압축은 선 그리기나 텍스트로 만든 것과 같이 이미지가 날카로운 가장자리를 포함하는 경우 실패합니다. 이러한 경우 jpeg 압축으로 인해 매우 눈에 띄는 아티팩트가 발생할 수 있습니다(그림 Figure 29.2).

(ref:jpeg-example) jpeg 아티팩트 그림. (a) 동일한 이미지가 점점 더 심한 jpeg 압축을 사용하여 여러 번 재현됩니다. 결과 파일 크기는 각 이미지 위에 빨간색 텍스트로 표시됩니다. 원본 이미지의 432KB에서 압축 이미지의 43KB로 파일 크기가 10배 감소하면 이미지 품질이 약간만 저하됩니다. 그러나 파일 크기가 2배 더 감소하여 불과 25KB가 되면 수많은 눈에 띄는 아티팩트가 발생합니다. (b) 가장 많이 압축된 이미지를 확대하면 다양한 압축 아티팩트가 나타납니다. 사진 제공: Claus O. Wilke

Figure 29.2: (ref:jpeg-example)

jpeg 아티팩트가 육안으로 즉시 보이지 않을 정도로 미묘하더라도 예를 들어 인쇄 제작에서 문제를 일으킬 수 있습니다. 따라서 가능하면 jpeg 형식을 피하는 것이 좋습니다. 특히 데이터 시각화나 스크린샷과 같이 선 그리기나 텍스트가 포함된 이미지에는 사용하지 마십시오. 이러한 이미지에 적합한 형식은 png 또는 tiff입니다. 저는 사진 이미지에만 jpeg 형식을 사용합니다. 그리고 이미지에 사진 요소와 선 그리기 또는 텍스트가 모두 포함되어 있는 경우에도 png 또는 tiff를 사용해야 합니다. 이러한 파일 형식의 최악의 시나리오는 이미지 파일이 커지는 것이지만 jpeg의 최악의 시나리오는 최종 제품이 보기 흉하게 보이는 것입니다.

이미지 형식 간 변환

일반적으로 모든 이미지 형식을 다른 이미지 형식으로 변환할 수 있습니다. 예를 들어 Mac에서는 미리보기로 이미지를 연 다음 여러 다른 형식으로 내보낼 수 있습니다. 그러나 이 과정에서 중요한 정보가 손실될 수 있으며 정보는 절대 복구되지 않습니다. 예를 들어 벡터 그래픽을 비트맵 형식(예: pdf 파일을 jpeg로)으로 저장한 후 벡터 그래픽의 주요 특징인 해상도 독립성이 손실됩니다. 반대로 jpeg 이미지를 pdf 파일로 저장한다고 해서 이미지가 마법처럼 벡터 그래픽으로 바뀌지는 않습니다. 이미지는 여전히 비트맵 이미지이며 pdf 파일 내에 저장될 뿐입니다. 마찬가지로 jpeg 파일을 png 파일로 변환한다고 해서 jpeg 압축 알고리즘으로 인해 발생했을 수 있는 아티팩트가 제거되지는 않습니다.

따라서 항상 원본 이미지를 최대 해상도, 정확도 및 유연성을 유지하는 형식으로 저장하는 것이 좋습니다. 따라서 데이터 시각화의 경우 그림을 pdf로 만들고 필요한 경우 png 또는 jpg로 변환하거나 고해상도 png로 저장하십시오. 마찬가지로 디지털 사진과 같이 비트맵으로만 사용할 수 있는 이미지의 경우 손실 압축을 사용하지 않는 형식으로 저장하거나 그렇게 할 수 없는 경우 가능한 한 적게 압축하십시오. 또한 가능한 한 높은 해상도로 이미지를 저장하고 필요에 따라 축소하십시오.