주요 콘텐츠

segmentObjectsFromEmbeddings

MedSAM(Medical Segment Anything Model) 영상 임베딩을 사용하여 의료 영상의 객체 분할

R2024b 이후

    설명

    [mask,score] = segmentObjectsFromEmbeddings(medsam,embeddings,imageSize,BoundingBox=boxPrompt)는 MedSAM(Medical Segment Anything Model) 영상 임베딩 embeddings와 경계 상자 좌표 boxPrompt를 시각적 프롬프트로 사용하여 imageSize 크기의 영상에서 객체를 분할하고, 예측된 객체 마스크 mask와 해당 예측 점수 score를 반환합니다.

    참고

    이 기능을 사용하려면 Deep Learning Toolbox™, Computer Vision Toolbox™ 및 Medical Imaging Toolbox™ Model for Medical Segment Anything Model이 필요합니다. 애드온 탐색기에서 Medical Imaging Toolbox Model for Medical Segment Anything Model을 설치할 수 있습니다. 애드온 설치에 대한 자세한 내용은 애드온을 받고 관리하기 항목을 참조하십시오.

    예제

    예제

    모두 축소

    MedSAM(Medical Segment Anything Model) 객체를 만듭니다.

    medsam = medicalSegmentAnythingModel;

    Medical Segmentation Decathlon 데이터 세트[1]를 다운로드하고 압축을 풉니다.

    zipFile = matlab.internal.examples.downloadSupportFile("medical","MedicalVolumeNIfTIData.zip");
    filepath = fileparts(zipFile);
    unzip(zipFile,filepath)

    이 데이터 세트의 폐 CT 볼륨을 작업 공간으로 불러옵니다.

    dataFolder = fullfile(filepath,"MedicalVolumeNIfTIData");
    filePath = fullfile(dataFolder,"lung_027.nii.gz");
    medVol = medicalVolume(filePath);
    vol = medVol.Voxels;

    횡단면 슬라이스를 추출하여 시각화합니다.

    img = extractSlice(medVol,45,"transverse");
    figure
    imshow(img,[])

    CT 영상에서 영상 임베딩을 추출합니다.

    embeddings = extractEmbeddings(medsam,img);

    시각화와 상호 작용하여, 분할할 객체를 포함하는 경계 상자를 지정합니다. 예를 들어, 높이와 너비가 각각 70픽셀이며 왼쪽 위 코너의 xy 좌표가 (310,255)인 경계 상자를 지정해 봅니다.

    boxPrompt = [310 255 70 70];

    객체 분할을 위해 영상 임베딩에 대해 MedSAM 디코더를 실행합니다. 경계 상자의 시각적 프롬프트 BoundingBox를 영상 표시에 그린 사각형 ROI의 위치로 지정합니다.

    mask = segmentObjectsFromEmbeddings(medsam,embeddings,size(img),BoundingBox=boxPrompt);
    overlayedImg = insertObjectMask(rescale(img),mask);

    영상 표시에서 분할 마스크가 영상에 겹쳐지게 시각화합니다.

    figure
    imshow(overlayedImg)

    [1] Medical Segmentation Decathlon. "Lung." Tasks. Accessed May 10, 2018. http://medicaldecathlon.com/.

    The Medical Segmentation Decathlon data set is provided under the CC-BY-SA 4.0 license. All warranties and representations are disclaimed. See the license for details.

    입력 인수

    모두 축소

    Medical Segment Anything Model로, medicalSegmentAnythingModel 객체로 지정됩니다.

    영상 임베딩으로, 64×64×256 숫자형 배열로 지정됩니다. 영상 또는 영상 배치에 대한 임베딩을 extractEmbeddings 객체 함수를 사용하여 생성하십시오. segmentObjectsFromEmbeddings 함수를 사용하여 영상을 분할하려면, 시각적 프롬프트와 함께 단 한 개 영상의 임베딩을 사용해야 합니다.

    데이터형: single

    분할할 영상의 크기로, [height width] 형식의 양의 정수로 구성된 1×2 벡터 또는 [height width channels] 형식의 양의 정수로 구성된 1×3 벡터로 지정(단위: 픽셀)됩니다.

    데이터형: single | double

    분할할 객체가 포함되는 사각형 경계 상자로, [x y width height] 형식의 1×4 벡터로 지정됩니다. xy 좌표는 상자의 중심을 지정하고, widthheight는 각각 상자의 너비와 높이입니다.

    데이터형: single | double

    출력 인수

    모두 축소

    객체 마스크로, 입력 영상과 같은 높이와 너비의 논리형 행렬로 반환됩니다.

    예측 점수로, 숫자형 스칼라로 반환됩니다.

    확장 기능

    모두 확장

    버전 내역

    R2024b에 개발됨