본문으로 건너뛰기

Computer Vision으로 부피 측정하기

SAM 3와 5 × 5 cm 보정 마커를 결합해 상자의 실제 치수와 외부·내부 부피를 계산하는 Roboflow Workflows 구축법입니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

반복적인 물체 측정을 자동화하려면 이미지에서 객체를 분할한 뒤 알려진 크기의 마커로 픽셀을 실제 단위로 보정하고, 높이·형태·깊이 정보를 결합해 부피를 계산해야 합니다. Roboflow Workflows 예제는 SAM 3로 닫힌 상자와 5 × 5 cm 파란색 마커를 분할하고, Mask Area Measurement와 Custom Python을 이용해 상자의 길이, 너비, 외부 부피, 내부 부피를 산출합니다. 마커의 실제 면적 25 cm²에서 pixels_per_cm을 계산하고 cv2.minAreaRect()로 회전된 상자의 두 변을 측정한 뒤, 높이 5.0 cm와 벽 두께 0.2 cm를 적용합니다. 예시 출력은 외부 크기 14.3 × 13.8 × 5.0 cm, 외부 부피 983.4 cm³, 내부 크기 13.9 × 13.4 × 4.6 cm, 내부 부피 853.8 cm³입니다. 정확도를 위해 카메라와 상자 표면의 평행성, 마커의 가시성, 실제 높이와 벽 두께의 일치 여부를 관리해야 합니다.

섹션별 상세

01
실물 측정 도구를 이용해 물체의 크기와 부피를 반복 측정하면 처리 속도와 확장성에 한계가 생깁니다. Computer Vision은 카메라 이미지에서 객체를 분할하고 픽셀 치수를 실제 단위로 바꿔 포장, 제조, 물류, 농업 현장의 측정을 자동화합니다. 다만 한 장의 이미지는 평면 정보만 담기므로 세 번째 차원은 알려진 높이, 물체의 형태, 깊이 데이터 또는 용기의 충전량으로 보완해야 합니다.
02
가장 단순한 방식은 높이가 이미 알려진 물체의 길이와 너비를 측정하는 것입니다. 예를 들어 길이 40 cm, 너비 30 cm, 높이 20 cm인 직육면체는 V = 40 X 30 X 20 = 24,000 cm³로 계산됩니다. 정육면체, 원기둥, 구처럼 형태가 분명한 물체는 각 공식에 필요한 변만 측정하면 되지만 실제 물체가 가정한 기하학적 형태와 가까워야 합니다.
직육면체, 정육면체, 원기둥, 구의 부피 공식과 각 도형에서 측정해야 하는 길이·반지름·높이를 한 화면에 정리한 도식입니다.
Diagram이 이미지는 물체의 알려진 형태에 따라 필요한 치수만 측정해 부피를 계산하는 방법을 시각화합니다. 직육면체는 V = L × W × H, 정육면체는 V = s³, 원기둥은 V = πr²h, 구는 V = 4/3 πr³ 공식을 사용하므로 Computer Vision 측정 단계와 후속 계산식을 연결합니다.
03
자갈, 곡물, 흙, 식품처럼 높이가 위치마다 달라지는 물질은 깊이 카메라나 depth-estimation model을 사용할 수 있습니다. 카메라에서 바닥까지 거리가 5 m이고 더미의 한 지점까지 거리가 3.8 m라면 해당 지점의 높이는 5.0 - 3.8 = 1.2 m이며, 여러 지점의 높이를 면적 정보와 결합해 전체 부피를 추정합니다. Depth Anything V2 또는 V3가 RGB 이미지에서 상대 깊이를 만들 수 있지만, 상대값을 미터 단위로 쓰려면 추가 보정이 필요합니다.
04
빈이나 탱크는 물질 자체의 형상을 분할하기보다 충전 높이를 측정해 부피를 추정할 수 있습니다. 일정한 단면을 가진 직사각형 빈이나 원통형 탱크에서는 충전 높이 비율이 부피 비율과 직접 대응하므로 240 L 용기가 60% 찼다면 약 144 L입니다. 높이에 따라 폭이 달라지는 테이퍼형 탱크나 병은 기하학적 모델 또는 보정 곡선이 필요합니다.
상자와 5 × 5 cm 보정 카드, 자를 함께 촬영해 상자의 실제 가로·세로·높이를 표시한 이미지입니다.
Diagram왼쪽 패널은 상자 상면의 가로 13.6 cm와 세로 14.0 cm를 보여주고, 오른쪽 패널은 상자 높이 5.0 cm를 보여줍니다. 상자와 같은 평면에 놓인 5 × 5 cm 보정 카드가 픽셀 치수를 실제 센티미터로 바꾸는 기준으로 사용됩니다.
나무 표면 위에 파란색 5 × 5 cm 보정 카드가 놓인 닫힌 상자의 위쪽 입력 이미지입니다.
Photo이 이미지는 Workflow가 처리할 원본 입력 구성을 보여줍니다. 카메라는 상자와 마커를 위에서 바라보고 있으며, 마커의 실제 크기를 이용해 상자 상면의 픽셀 측정값을 센티미터로 변환합니다.
05
Roboflow Workflows의 예제는 위에서 촬영한 닫힌 직사각형 상자의 길이, 너비, 외부 부피, 내부 부피를 계산하는 전체 파이프라인으로 구성됩니다. SAM 3가 cardboard box와 blue paper square 프롬프트로 인스턴스 마스크를 만들고, Mask Area Measurement가 픽셀 면적을 추가하며, Custom Python 블록이 보정과 기하학 계산을 이어갑니다. 입력에는 실제 크기가 5 × 5 cm인 파란색 마커가 필요하고, 상자 높이는 5.0 cm, 벽 두께는 0.2 cm로 설정됩니다.
입력 이미지, SAM 3 기반 상자 측정 모델, 마스크 면적 측정, 시각화, Custom Python 부피 계산, 출력 이미지로 이어지는 Workflow 구조도입니다.
Diagram도식은 이미지 입력이 SAM 3 인스턴스 분할을 거쳐 마스크 면적과 시각화 단계로 분기되고, 이후 보정된 상자 부피 계산으로 합쳐지는 흐름을 보여줍니다. 최종 단계에서는 측정값과 주석이 추가된 출력 이미지가 함께 생성되어 모델 추론과 수치 계산의 연결 구조를 확인할 수 있습니다.
06
Workflow는 image 입력에서 모델 추론을 실행한 뒤 마스크 면적 측정, 마스크 시각화, 면적 라벨 표시, 부피 계산 순서로 처리합니다. Project Model 블록은 SAM 3의 안정적인 Model endpoint에 연결되며, 이후 단계는 $steps.model.predictions와 $steps.measure_mask_areas.predictions에서 분할 결과와 면적 정보를 받습니다. 모델 endpoint를 별도 단계로 유지하면 나중에 Model을 Fine-tuning하거나 교체해도 나머지 계산 Workflow를 바꾸지 않아도 됩니다.
python
hsv = cv2.cvtColor( calibration_arr, cv2.COLOR_BGR2HSV )
blue = cv2.inRange( hsv, np.array([85, 45, 35], dtype=np.uint8), np.array([140, 255, 255], dtype=np.uint8) )
contours, _ = cv2.findContours( blue, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE )

원본 이미지를 HSV로 변환한 뒤 파란색 영역을 분리하고 외부 윤곽을 찾아 5 × 5 cm 보정 마커를 검출합니다.

07
Custom Python 블록은 원본 이미지를 HSV로 바꾸고 파란색 임계값 [85, 45, 35]부터 [140, 255, 255]까지를 적용해 보정 마커의 윤곽을 찾습니다. 마커 픽셀 면적을 25 cm²와 비교해 pixels_per_cm = math.sqrt(marker_px / 25.0)로 환산 비율을 얻고, 상자 마스크의 가장 큰 윤곽에 cv2.minAreaRect()를 적용해 회전된 상자의 두 변을 구합니다. 이 방식은 상자가 이미지에서 약간 기울어져도 길이와 너비를 측정할 수 있게 하며, 마스크가 없으면 예측 bounding box를 대신 사용합니다.
python
pixels_per_cm = ( math.sqrt(marker_px / 25.0) if marker_px > 0.0 else 0.0 )

25 cm²로 알려진 보정 마커의 픽셀 면적에서 센티미터당 픽셀 수를 계산합니다.

상자 이미지에서 파란색 5 × 5 cm 보정 마커를 청록색 마스크로 검출하고 37098 px 및 38.52 px/cm을 표시한 결과입니다.
Screenshot검출된 마커의 픽셀 영역을 실제 면적 25 cm²와 비교하면 이미지의 픽셀-센티미터 변환 비율을 계산할 수 있습니다. 이 보정 결과가 이후 상자 마스크의 길이와 너비를 실제 단위로 바꾸는 기준으로 사용됩니다.
08
외부 부피는 환산한 길이와 너비에 고정 높이 5.0 cm를 곱해 계산하고, 내부 부피는 벽 두께 0.2 cm를 각 치수의 양쪽에서 차감한 뒤 계산합니다. 예시 결과 이미지에는 외부 크기 14.3 × 13.8 × 5.0 cm, 외부 부피 983.4 cm³, 내부 크기 13.9 × 13.4 × 4.6 cm, 내부 부피 853.8 cm³가 표시됩니다. 최종 출력은 주석이 추가된 이미지와 함께 치수, 면적, 부피, 마커 면적, pixels_per_cm, measurement_status를 구조화된 값으로 반환합니다.
python
rect = cv2.minAreaRect(largest)
side_a_px, side_b_px = rect[1]

length_cm = float( max(side_a_px, side_b_px) / pixels_per_cm )
width_cm = float( min(side_a_px, side_b_px) / pixels_per_cm )

상자 마스크의 가장 큰 윤곽에 최소 면적 회전 사각형을 맞춘 뒤 두 변을 실제 길이와 너비로 환산합니다.

09
정확도를 유지하려면 카메라가 상자 표면을 직접 내려다보고, 상자와 마커가 거의 같은 평면에 있으며, 파란색 마커 전체가 보이고 반사광이나 그림자에 가려지지 않아야 합니다. 예제는 직사각형의 닫힌 상자, 실제 높이 5 cm, 벽 두께 약 0.2 cm, 이미지에서 가장 큰 상자라는 조건을 전제로 합니다. SAM 3의 마스크 경계가 실행마다 조금 달라질 수 있으므로 측정값에 작은 차이가 생길 수 있으며, 높이를 자동화하려면 Depth Estimation block을 추가할 수 있습니다.
python
external_area_cm2 = float( length_cm * width_cm )
external_volume_cm3 = float( external_area_cm2 * height_cm )

환산한 상자 길이와 너비에 알려진 높이를 곱해 외부 바닥 면적과 외부 부피를 계산합니다.

용어 해설

Computer Vision 부피 측정(Computer Vision Volume Measurement)
카메라 이미지에서 물체의 경계를 분할하고 픽셀 단위를 실제 길이 단위로 변환해 부피를 추정하는 방법입니다. 이미지에는 평면 정보만 담기므로 높이, 깊이, 기하학적 형태 또는 용기의 충전량을 추가로 결합해야 합니다.
인스턴스 분할(Instance Segmentation)
이미지 속 개별 객체를 식별하면서 각 객체의 픽셀 단위 경계까지 추출하는 Computer Vision 기법입니다. 이 글에서는 SAM 3가 상자와 보정 마커를 분리하고, 추출된 마스크가 면적과 외곽 치수 계산의 입력으로 사용됩니다.
물리적 보정(Physical Calibration)
이미지의 픽셀 길이를 센티미터나 미터 같은 실제 단위로 바꾸는 과정입니다. 실제 크기를 아는 5 × 5 cm 마커의 픽셀 면적을 기준으로 pixels_per_cm을 계산한 뒤 상자의 길이와 너비를 환산합니다.
깊이 추정(Depth Estimation)
카메라와 장면 속 각 지점 사이의 거리를 추정해 이미지에 없는 세 번째 차원 정보를 얻는 방법입니다. Depth Anything V2 또는 V3 같은 모델은 RGB 이미지에서 상대적 깊이를 만들지만, 미터 단위 부피에 사용하려면 별도 보정이 필요합니다.
최소 면적 회전 사각형(Minimum-Area Rotated Rectangle)
객체 윤곽을 모두 포함하면서 면적이 가장 작은 회전 사각형을 찾는 기하학적 방법입니다. Workflow는 OpenCV의 cv2.minAreaRect()로 약간 기울어진 상자의 두 변을 구하고 긴 변과 짧은 변을 각각 길이와 너비로 변환합니다.

기술

  • Roboflow Workflows
  • SAM 3
  • Mask Area Measurement
  • Custom Python
  • OpenCV
  • NumPy
  • Supervision
  • Depth Anything V2
  • Depth Anything V3

활용 사례

  • 포장 상자의 외부 및 내부 부피 측정
  • 제조 현장의 반복적인 물체 치수 측정
  • 물류에서 패키지 크기와 용적 산출
  • 농업에서 곡물이나 흙 더미의 부피 추정
  • 빈과 탱크의 충전량 기반 물질 부피 추정
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 25.수집 2026. 08. 25.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.