🌟 HALCON이란?
더보기
HALCON은 독일 MVTec Software GmbH 에서 만든 머신 비전 라이브러리다!
쉽게 말해, 카메라로 찍은 이미지를 분석해서 불량 검사, 측정, 인식 등을 할 수 있게 해주는 소프트웨어.
공장 자동화, 품질 검사, 로봇 비전 등 산업 현장에서 주로 사용한다.
🌟 HALCON의 특징
더보기
| 특징 | 설명 |
| 강력한 이미지 처리 | 블롭 분석, 패턴 매칭, OCR, 3D 비전 등 다양한 기능 제공 |
| 다양한 언어 지원 | C, C++, C#, Python등 여러 언어에서 사용 가능 |
| HDevelop IDE 제공 | 전용 개발 환경에서 쉽게 코드 작성 가능 |
| 크로스 플랫폼 | Windows, Linux, macOS 모두 지원 |
| 방대한 예제 | 500개 이상의 예제 코드 제공 |
🌟 HALCON 에디션 종류
더보기
HALCON은 용도에 따라 여러 에디션 존재
| 에디션 | 설명 |
| HANCON (Full) | 모든 기능을 포함한 정식 버전 |
| HANCON XL | 대용량 이미지 처리에 특화된 버전 |
| HANCON Emnedded | 임베디드 장치용 경량 버전 |
| HANCON Inspection | 검사 특화 버전 (일부 기능 제한) |
| HALCON Student | 학습용 무료 버전 (상업적 사용 불가) |
⚠️ 라이센스 파일과 설치된 에디션이 반드시 일치해야 한다!
🌟 HDevelop 이란?
더보기
HDevelop은 HALCON에서 제공하는 전용 통합 개발 환경이다.
- HALCON 코드를 작성하고 실시간으로 결과를 확인할 수 있다.
- 이미지를 불러와서 각 처리 단계를 한 줄씩 실행해 볼 수 있다.
- 작성한 코드를 C++, C# 등의 언어로 자동 변환 해주는 기능도 있다.
🌟 HALCON 기본 개념 용어 정리
더보기
Iconic Variable
이미지, 영역(Region), XLD 등 시각적인 데이터를 담는 변수
| 타입 | 설명 |
| Image | 카메라에서 읽어온 이미지 |
| Region | 이미지에서 특정 영역을 표현 (픽셀 집합) |
| XLD | 서브픽셀 단위의 윤곽선/라인 데이터 |
Control Variable
숫자, 문자열 같은 일반적인 데이터를 담는 변수
Width := 640
Height := 480
Message := 'Hello HALCON'
Operator
HALCON에선 함수를 Operator 이라 부른다.
"기본 문법"
오퍼레이터명 (입력 아이코닉, 출력 아이코닉, 입력 컨트롤, 출력 컨트롤)
🌟 HALCON 기본 사용 흐름
더보기
HALCON에서 이미지 처리를 할 때 일반적인 흐름
이미지 읽기 → 전처리 → 관심 영역 (ROI) → 처리 → 결과 출력
🌟 자주 쓰는 기본 오퍼레이터
더보기
이미지 읽기 / 카메라 연결
* 파일에서 이미지 읽기
read_image (Image, 'image.png')
* 카메라 열기
open_framegrabber ('GigEVision2', 1, 1, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', 'default', 0, -1, AcqHandle)
* 이미지 1장 캡쳐
grab_image (Image, AcqHandle)
* 카메라 닫기
close_framegrabber (AcqHandle)
이미지 표시
* 윈도우 열기
dev_open_window (0, 0, 640, 480, 'black', WindowHandle)
*이미지 표시
dev_display (Image)
이미지 정보 가져오기
* 이미지 가로/세로 크기 가져오기
get_image_size (Image, Width, Height)
전처리
* RGB → 그레이스케일 변환
rgb1_to_gray (Image, GrayImage)
* 가우시안 블랙 (노이즈 제거)
gauss_filter (GrayImage, ImageGauss, 5)
* 이진화 (Threshold)
threshold (GrayImage, Region, 128, 255)
영역 처리
* 연결된 영역들로 분리
connection (Region, ConnectedRegions)
* 면적, 중심 좌표 구하기
area_center (ConnectedRegion, Area, Row, Column)
* 면적 기준으로 필터링
aelect_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 100, 99999)
패턴 매칭
* 템플릿 모델 만들기
create_shape_model (TemplateImage, 'auto', rad(-45), rad(90), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
* 이미지에서 찾기
find_shape_model (SearchImage, ModelID, rad(-45), rad(90), 0.5, 0, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
결과 텍스트 출력
* 윈도우에 텍스트 출력
disp_message (WindowHandle, '검사 완료', 'window', 12, 12, 'white', 'false')
🌟 HALCON → 다른 언어로 내보내기 (Export)
더보기
HDevelop에서 작성한 코드를 실제 프로젝트에 사용하려면 다른 언어로 변환한다.
- HDevelop 메뉴 → File →Export
- 원하는 언어 선택 (C++, C#, Python)
- 저장
실무에서는 HDevelop에서 알고리즘을 먼저 검증하고, 검증된 코드를 Export해서 프로젝트에 붙이는 방식을 많이 쓴다.
🌟 HALCON에서 자주 쓰는 개념 - ROI (관심 영역)
더보기
ROI(Region of Interest)는 이미지에서 처리할 특정 영역을 지정하는 것이다.
전체 이미지를 처리하면 느리고 오답이 많아질 수 있기 때문에, 검사가 필요한 부분만 잘라서 처리한다.
* 사각형 ROI 생성
gen_rectangle1 (ROI, 100, 100, 300, 400)
* 원형 ROI 생성
gen_circle (ROI, 240, 320, 100)
* ROI를 이미지에 적용 (crop)
reduce_domain (Image, ROI, ImageReduced)
🌟 버전 이름 규칙
더보기
HALCON 버전명은 연도, 월 형식으로 사용한다.
| 버전명 | 출시 시기 |
| HALCON 20.11 | 2020년 11월 |
| HALCON 21.11 | 2021년 11월 |
| HALCON 24.11 | 2024년 11월 |
Steady 와 Progress 두 가지 릴리즈가 있다.
- Steady: 안정화 버전 (실무 권장)
- Progress: 최신 기능이 먼저 들어가는 버전 (기능 우선)
🌟 라이센스 종류
더보기
| 종류 | 설명 |
| 동글 (USB Dongle) | USB 동글이 꽂혀 있어야 실행됨 |
| 소프트웨어 라이센스 | 특정 PC에 고정 (MAC 주소 기반) |
| 평가판 (Evaluation) | 일정 기간 무료 사용 가능 |
| 학생용 (Student) | 비상업적 용도 무료 |
⚠️ 라이센스 파일의 HOSTID = FLEXID = ... 항목이 있으면 동글 전용 라이센스다.
🌟 참고 자료
더보기
- MVTec 공식 사이트
- HALCON 공식 문서
- HDevelop 내 예제: File → Browse Examples
