이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

ROI 생성 개요

이 툴박스는 원, 타원, 다각형, 직선, 연속선, 점, 사각형 등 다양한 형태의 관심 영역을 생성하는 클래스 세트를 제공합니다. 영상에서 형태를 직접 그리거나 경계에 맞춘 형태를 그릴 수도 있습니다. 다음 그림은 영상 위에 그린 다각형 ROI를 보여줍니다.

ROI 생성 클래스

이 툴박스에는 ROI 생성을 지원하는 10개의 클래스가 포함되어 있습니다. 이러한 클래스를 사용하여 좌표축 위에 특정 형태로 된 ROI를 만들 수 있습니다. 이러한 클래스는 ROI를 유연하게 생성할 수 있는 속성과 메서드, 이벤트를 갖습니다. 이러한 클래스를 사용하면 마우스를 사용하여 대화형 방식으로 ROI를 그리거나 ROI의 크기와 형태에 대한 정보를 지정하여 프로그래밍 방식으로 그릴 수 있습니다. ROI 객체를 만든 후에는 ROI에 대해 마스크 생성과 같은 연산을 수행할 수 있습니다. ROI의 동작과 모양을 제어하고, 마우스 클릭이나 이동 등 ROI 내부에서 발생하는 이벤트에 응답할 수도 있습니다.

ROI 클래스를 대화형 방식으로 사용할 때의 기본적인 워크플로는 클래스의 객체를 인스턴스화한 다음 draw 메서드를 호출하는 것입니다.

  1. 영상을 MATLAB 작업 공간으로 읽어 들인 후 이를 Figure에 표시합니다.

    I = imread('pears.png');
    imshow(I)
  2. ROI 객체를 인스턴스화합니다. 이 예제에서는 영상 위에 타원형 ROI를 만듭니다. StripeColor 파라미터를 사용하여 경계의 모양을 사용자 지정합니다.

    h = images.roi.Ellipse('StripeColor','m');
  3. Ellipse 객체의 draw 메서드를 호출하여 좌표축 위에 ROI를 그립니다. 마우스 포인터를 영상 위로 가져가면 커서가 십자 기호로 바뀝니다. 클릭한 다음 영상 위에서 커서를 움직여서 타원 모양을 만듭니다. 대화형 방식으로 타원을 움직이고 타원의 모양을 변경할 수 있습니다.

    draw(h)

ROI를 프로그래밍 방식으로 그리는 경우에는 draw 메서드를 호출할 필요가 없습니다. 자세한 내용은 생성하려는 ROI 형태의 클래스를 도움말 페이지에서 참조하십시오(예: images.roi.Circle).

ROI 생성 함수

이 툴박스는 편의를 위해 ROI 클래스를 직접 호출하지 않고도 ROI를 그릴 수 있도록 지원하는 10개의 함수를 제공합니다. 이러한 함수는 ROI 클래스의 인스턴스를 만듭니다.

이러한 ROI 편의 함수를 사용할 때의 기본적인 워크플로는 함수를 호출하는 것입니다. 함수는 클래스를 인스턴스화하고 draw 메서드를 호출하여 대화형 방식으로 ROI 배치를 시작합니다. 편의 함수를 사용하여 객체를 만들 때는 LineWidthColor와 같은 다양한 속성의 값을 지정할 수 있습니다.

앱 디자이너로 만든 앱에서 ROI 사용하기

앱 디자이너로 만든 앱에서 ROI를 사용할 수 있습니다. 그러나 이러한 앱에서는 표준 Axes 객체를 사용해야 합니다. UIAxes에서는 ROI를 상위(부모)로 지정할 수 없습니다. 또한, ROI 생성 함수를 호출할 때 좌표축을 명시적으로 입력 인수로 지정하거나 'Parent' 이름/값 쌍을 사용하여 명시적으로 지정해야 합니다. 앱에서 이 방법으로 ROI를 사용할 때는 다음과 같은 몇 가지 제한 사항이 있습니다.

  • ROI 위에서 마우스 커서를 이동해도 커서가 업데이트되지 않습니다. 커서는 항상 화살표로 표시됩니다.

  • ROI 위에서 마우스 커서를 이동해도 ROI의 색이 바뀌지 않습니다.

  • ROI 위에서 마우스 오른쪽 버튼 클릭 메뉴(UIContextMenu)는 지원되지 않습니다.

다음 코드는 일반적인 앱 생성 워크플로는 아니긴 하나, 앱(UIFigure)의 Axes에서 ROI를 지정하는 방법을 보여줍니다.

  1. UIFigure를 만듭니다.

    fig = uifigure;

  2. UIFigureAxes를 만듭니다. ROI는 Axes 객체에서만 만들 수 있습니다. UIAxes 객체에서는 만들 수 없습니다.

    ax = axes(fig);

  3. Axes 안에 ROI를 만듭니다. drawcircle 같은 ROI 생성 함수를 호출합니다. 이때 Axes를 인수로 지정합니다. 좌표축 위로 커서를 이동하고 마우스를 클릭한 후 끌어서 ROI를 그립니다.

    h = drawcircle(ax);

    images.roi.Circle 같은 ROI 생성 클래스를 사용하여 ROI를 만들 수도 있습니다. 클래스를 사용하는 경우 draw 함수를 호출하고 ROI 객체를 인수로 지정해야 합니다.

관련 예제

세부 정보