Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

기본 영상 가져오기, 처리하기, 내보내기

이 예제에서는 영상을 작업 공간으로 읽어 들여 영상의 대비를 조정한 다음, 조정된 영상을 파일에 쓰는 방법을 보여줍니다.

1단계: 영상을 읽어 들여 표시하기

imread 명령을 사용하여 영상을 작업 공간으로 읽어 들입니다. 이 예제는 툴박스에 포함된 샘플 영상 중 pout.tif라는 파일에서 어린 소녀의 영상을 읽어 들인 후 배열 I로 저장합니다. imread는 파일로부터 그래픽스 파일 형식이 TIFF(Tagged Image File Format)임을 유추해 냅니다.

I = imread('pout.tif');

imshow 함수를 사용하여 영상을 표시합니다. 영상 뷰어 앱에서 영상을 볼 수도 있습니다. imtool 함수는 영상을 표시하고 일반적인 영상 처리 작업을 위한 통합 환경을 제공하는 영상 뷰어 앱을 엽니다. 영상 뷰어 앱은 imshow의 모든 영상 표시 기능을 제공할 뿐만 아니라 스크롤 막대, 픽셀 영역 툴, 영상 정보 툴, 대비 조정 툴 같이 영상을 탐색할 수 있는 다른 툴도 이용할 수 있도록 합니다.

imshow(I)

Figure contains an axes. The axes contains an object of type image.

2단계: 작업 공간에 영상이 표시되는 방식 확인하기

whos 명령을 사용하여 imread 함수가 작업 공간에 영상 데이터를 어떻게 저장했는지 확인합니다. 작업 공간 브라우저에서 변수를 확인할 수도 있습니다. imread 함수는 영상 데이터를 변수 I로 반환합니다. 이 변수는 uint8형 데이터 요소로 구성된 291×240 크기의 배열입니다.

whos I
  Name        Size             Bytes  Class    Attributes

  I         291x240            69840  uint8              

3단계: 영상 대비 개선하기

영상 픽셀 명암의 분포를 확인합니다. 영상 pout.tif는 대비가 다소 낮은 영상입니다. 영상의 명암 분포를 보려면 imhist 함수를 호출하여 히스토그램을 생성하십시오. (imhist를 호출하기 전에 figure 명령을 호출하여 현재 Figure 창에서 표시 중인 영상 I를 덮어쓰지 않도록 하십시오.) 히스토그램에서 영상의 명암 범위가 상당히 좁은 것을 알 수 있습니다. 영상의 명암 범위가 가능한 범위 [0, 255] 전반에 걸쳐져 있지 않고, 대비가 좋은 영상을 얻기 위해 필요한 높은 값과 낮은 값이 없습니다.

figure
imhist(I)

Figure contains 2 axes. Axes 1 contains an object of type stem. Axes 2 contains 2 objects of type image, line.

histeq 함수를 사용하여 영상의 대비를 개선합니다. 히스토그램 평활화를 수행하면 명암 값이 영상의 전체 범위로 분산됩니다. 영상을 표시합니다. (이 툴박스에는 대비 조정을 수행하는 imadjust, adapthisteq 같은 여러 함수 그리고 영상 뷰어에서 사용 가능한 대비 조정 툴 같은 대화형 방식 툴이 포함되어 있습니다.)

I2 = histeq(I);
figure
imshow(I2)

Figure contains an axes. The axes contains an object of type image.

imhist 함수를 다시 호출하여 평활화된 영상 I2의 히스토그램을 생성합니다. 두 히스토그램을 비교해보면 I2의 히스토그램이 I의 히스토그램보다 더 넓게 전체 범위에 걸쳐 분산되어 있음을 알 수 있습니다.

figure
imhist(I2)

Figure contains 2 axes. Axes 1 contains an object of type stem. Axes 2 contains 2 objects of type image, line.

4단계: 디스크 파일에 조정된 영상 쓰기

imwrite 함수를 사용하여 새로 조정된 영상 I2를 디스크 파일에 씁니다. 이 예제에서는 파일 이름에 파일 이름 확장자 '.png'가 포함되어 있기 때문에 imwrite 함수가 영상을 PNG(Portable Network Graphics) 형식의 파일에 씁니다. 하지만 사용자가 다른 형식을 지정할 수도 있습니다.

imwrite (I2, 'pout2.png');

5단계: 새로 쓴 파일의 내용 확인하기

imfinfo 함수를 사용하여 imwrite가 디스크 파일에 쓴 내용을 확인합니다. imfinfo 함수는 형식, 크기, 너비, 높이와 같은 파일의 영상에 대한 정보를 반환합니다.

imfinfo('pout2.png')
ans = struct with fields:
                  Filename: '/tmp/Bdoc21a_1584965_129391/tp5089ea8a/images-ex89505080/pout2.png'
               FileModDate: '27-Jan-2021 12:11:01'
                  FileSize: 36938
                    Format: 'png'
             FormatVersion: []
                     Width: 240
                    Height: 291
                  BitDepth: 8
                 ColorType: 'grayscale'
           FormatSignature: [137 80 78 71 13 10 26 10]
                  Colormap: []
                 Histogram: []
             InterlaceType: 'none'
              Transparency: 'none'
    SimpleTransparencyData: []
           BackgroundColor: []
           RenderingIntent: []
            Chromaticities: []
                     Gamma: []
               XResolution: []
               YResolution: []
            ResolutionUnit: []
                   XOffset: []
                   YOffset: []
                OffsetUnit: []
           SignificantBits: []
              ImageModTime: '27 Jan 2021 17:11:01 +0000'
                     Title: []
                    Author: []
               Description: []
                 Copyright: []
              CreationTime: []
                  Software: []
                Disclaimer: []
                   Warning: []
                    Source: []
                   Comment: []
                 OtherText: []