Main Content

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

undistortImage

영상에서 렌즈 왜곡 보정

설명

예제

[J,newOrigin] = undistortImage(I,cameraParams)는 입력 영상 I에서 렌즈 왜곡이 제거된 영상 J를 반환합니다. 이 함수는 출력 영상 원점의 [x,y] 위치도 반환합니다. 이 위치는 cameraParams에 지정된 내재적 입력 좌표를 기준으로 설정됩니다.

[J,newOrigin] = undistortImage(I,cameraParams,interp)는 입력 영상에 사용할 함수의 보간 방법을 지정합니다.

[J,newOrigin] = undistortImage(___,Name,Value)는 위에 열거된 구문 중 하나를 사용하여 하나 이상의 Name,Value 쌍 인수를 지정합니다. 지정되지 않은 속성에는 디폴트 값이 사용됩니다.

예제

모두 축소

보정 영상 세트를 만듭니다.

images = imageDatastore(fullfile(toolboxdir('vision'),'visiondata', ...
    'calibration','mono'));

보정 패턴을 검출합니다.

[imagePoints,boardSize] = detectCheckerboardPoints(images.Files);

사각형 코너의 세계 좌표를 생성합니다. 사각형 크기의 단위는 밀리미터입니다.

squareSize = 29;
worldPoints = generateCheckerboardPoints(boardSize,squareSize);

카메라를 보정합니다.

I = readimage(images,1); 
imageSize = [size(I,1),size(I,2)];
cameraParams = estimateCameraParameters(imagePoints,worldPoints, ...
                                  'ImageSize',imageSize);

렌즈 왜곡을 제거하고 결과를 표시합니다.

I = images.readimage(1);
J1 = undistortImage(I,cameraParams);
figure; imshowpair(I,J1,'montage');
title('Original Image (left) vs. Corrected Image (right)');

Figure contains an axes object. The axes object with title Original Image (left) vs. Corrected Image (right) contains an object of type image.

J2 = undistortImage(I,cameraParams,'OutputView','full');
figure; 
imshow(J2);
title('Full Output View');

Figure contains an axes object. The axes object with title Full Output View contains an object of type image.

입력 인수

모두 축소

입력 영상으로, M×N×3 트루컬러 또는 M×N 2차원 회색조로 지정됩니다. 입력 영상은 실수형 비희소(nonsparse) 형식이어야 합니다.

데이터형: single | double | int16 | uint8 | uint16 | logical

카메라 파라미터로, cameraParameters 객체 또는 cameraIntrinsics 객체로 지정됩니다. estimateCameraParameters 함수를 사용하여 cameraParameters 객체를 반환할 수 있습니다. cameraParameters 객체는 카메라의 내부 파라미터, 외부 파라미터, 렌즈 왜곡 파라미터를 포함합니다.

입력 영상에 사용할 보간 방법으로, 'linear', 'nearest' 또는 'cubic'으로 지정됩니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'FillValues',0은 출력 픽셀 채우기 값을 0으로 설정합니다.

출력 픽셀 채우기 값으로, 하나 이상의 채우기 값이 포함된 배열로 지정됩니다. 입력 영상의 역변환된 대응 위치가 완전히 입력 영상 경계 바깥쪽에 있는 경우 출력 픽셀에 채우기 값을 사용합니다. 2차원 회색조 입력 영상을 사용하는 경우 FillValues를 스칼라로 설정해야 합니다. 트루컬러를 사용하는 경우 FillValues는 스칼라이거나 RGB 값의 요소를 3개 가진 벡터일 수 있습니다.

출력 영상의 크기로, 'same', 'full' 또는 'valid'로 지정됩니다. 속성을 'same'으로 설정하면 함수는 입력 영상의 크기와 일치하도록 출력 영상을 설정합니다. 속성을 'full'로 설정하면 입력 영상의 모든 픽셀이 출력에 포함됩니다. 속성을 'valid'로 설정하면 함수는 유효한 픽셀만 포함되도록 출력 영상을 자릅니다.

입력 영상:

OutputView출력 영상
'same'

입력 영상 크기와 동일하게 맞춥니다.

'full'

입력 영상의 모든 픽셀을 포함합니다.

'valid'

입력 영상의 유효한 픽셀만 포함합니다.

출력 인수

모두 축소

왜곡이 보정된 영상으로, M×N×3 트루컬러 또는 M×N 2차원 회색조로 반환됩니다.

데이터형: single | double | int16 | uint8 | uint16 | logical

출력 영상 원점으로, 요소를 2개 가진 [x,y] 벡터로 반환됩니다. 이 함수는 내재적 입력 좌표를 기준으로 하여 출력 원점 위치를 설정합니다. OutputView'same'으로 설정하면 출력 영상의 크기가 입력 영상과 동일하다는 의미이며, 함수는 newOrigin[0,0]으로 설정합니다.

newOrigin 출력은 출력 영상 J의 내재적 입력 좌표에서 입력 영상 I의 내재적 좌표로의 평행 이동을 나타냅니다.

PI는 입력 영상 I의 내재적 좌표에 있는 점을 나타냅니다.
PJ는 출력 영상 J의 내재적 좌표에서 동일한 점을 나타냅니다.

PI = PJ + newOrigin

확장 기능

버전 내역

R2014a에 개발됨