Common
1 개요
이미지 프로세싱 작업을 수행하는 데 필요한 기본적인 설정과 옵션을 설명합니다.
2 기본 개념
2.1 Source, Operand, Destination
Source
: 이미지 처리의 입력 값이 되는 이미지 혹은 데이터를 의미합니다.Operand
: 이미지 처리의 피연산자로써 연산에 사용되는 이미지 혹은 데이터를 의미합니다. Operand는 피연산자가 필요한 알고리즘에서만 사용되며, 이미지가 아닌 특정 값을 사용할 때에는 Scalar라는 표현을 사용합니다.Destination
: 이미지 처리 후 출력, 저장하는 결과 이미지 혹은 데이터를 의미합니다.
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
SetOperationSource | EOperationSource | eOperationSource | IN | 피연산자를 (Scalar / 이미지) 로 설정합니다. |
eOperationSource
- Default : EOperationSource_Scalar
2.2 Image, ROI 및 Pivot
이미지 처리의 주요 개념인 이미지 자체, ROI(Region of Interest), 그리고 Pivot(기준점) 설정 방법을 다룹니다.
Image
: 이미지 처리에 사용할 원본이미지를 뜻합니다.CFLImage
클래스를 사용합니다.ROI
: 설정한 이미지에서 이미지 처리에 사용할 관심영역을 지정합니다.CFLFigure
클래스 및 해당 클래스를 상속받는 하위 클래스를 사용합니다.Pivot
: Source ROI의 기준점을 설정합니다. 기준점은 이후 알고리즘 실행 시 설정한 ROI 영역들의 Intersection 영역을 계산하는 데 사용됩니다.CFLPoint<Type>
클래스를 사용합니다.
각 Parameter를 지정하지 않은 경우
Source Image를 제외한 각 Image, ROI 및 Pivot은 필수 Parameter가 아니기 때문에 설정하지 않은 경우 처리 방식을 설명합니다.
Source ROI
: Source 이미지 영역 전체를 Source ROI로 설정합니다.Source Pivot
: Source ROI의 Boundary Rect의 중심좌표로 설정합니다.Operand
: Source 이미지를 복사하여 피연산자로 사용합니다.Operand ROI
: Source ROI와 동일하게 처리합니다.Operand Pivot
: Operand ROI의 Boundary Rect의 중심좌표로 설정합니다.Destination
: 이미지 처리 결과는 Source 이미지에 저장합니다.Destination ROI
: Source ROI와 동일하게 처리합니다.Destination Pivot
: Destination ROI의 Boundary Rect의 중심좌표로 설정합니다.
2.3 Intersection 계산 과정
Destination Pivot을 기준으로 Source Pivot과 Operand Pivot을 이동합니다.
Pivot이 이동한 만큼 Source와 Operand의 ROI도 이동합니다.
Pivot이 일치된 상태에서 ROI 간의 Intersection을 계산해 출력 영역을 구합니다.
Source 이미지 | ROI 지정 |
---|---|
![]() |
![]() |
결과 | Destination 이미지가 없는 경우 Blank Color (200,200,200) |
Destination 이미지가 있는 경우 Blank Color (0,0,0) Always Fill Blank Color 체크 |
![]() |
![]() |
3 추가 옵션
Blank Color
Blank 영역을 설정한 값으로 채웁니다. Source Image의 채널 수 만큼 각각 설정할 수 있습니다.
Blank Color 값이 Source Image의 표현범위를 벗어나면 동작하지 않습니다.
- Always Fill Blank Color
- Checked : Source ROI에 해당되는 구역만큼 연산 처리를 진행하고, 연산 처리가 진행되지 않는 부분에 대해서는 Blank Color로 처리합니다.
만약 Destination 이미지에 Source ROI의 연산이 진행되지 않는 여백이 존재한다면 해당 영역은 Blank Color로 처리합니다. - UnChecked (Default): Intersection 된 ROI만 결과로 나타냅니다.
- 이 설정은 Destination 이미지가 있을 때만 적용됩니다.
- Checked : Source ROI에 해당되는 구역만큼 연산 처리를 진행하고, 연산 처리가 진행되지 않는 부분에 대해서는 Blank Color로 처리합니다.
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
EnableFillBlankColorMode | bool | bFillBlankColor | IN | Fill Blank Color 모드를 설정합니다. |
bFillBlankColor
- Default : false
Batch Processing Setting
FLImaging®의 CFLImage
클래스는 Multi Page를 지원합니다.
각 페이지별로 이미지 버퍼를 관리하며, 배치 처리를 통해 한 번의 실행으로 다중 처리가 가능합니다.
- Batch Processing
- Checked: Source Image의 페이지 수만큼 Destination Image에 연산 결과가 저장됩니다. Destination 이미지는 기존 이미지 버퍼를 초기화하고 새로 생성하여 사용합니다.
- Unchecked (Default): Source Image의 현재 페이지 1장의 결과만 Destination 이미지의 현재 페이지에 저장합니다.
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
EnableBatchProcessing | bool | bBatchProcessing | IN | Batch Processing 실행 여부 설정 |
bBatchProcessing
- Default : false
Image Figure
CFLImage
클래스는 이미지 버퍼 뿐만 아니라 이미지 처리에 필요한 데이터를 함께 관리하여 처리 및 저장이 가능합니다.
- Transformation
- Checked : Source 이미지에 있는 Figure를 이미지 처리 후 Destination에 복사합니다. 복사되는 위치는 Source 와 Destination의 Pivot Offset만큼 이동합니다.
- UnChecked (Default) : Source 이미지에 있는 Figure를 Destination에 복사하지 않습니다. 만약 기존 Destination 이미지에 Figure가 존재하는 경우, 전부 삭제합니다.
멤버함수 | 파라미터 | 설 명 | ||
---|---|---|---|---|
EnableImageFigureTransformation | bool | bEnable | IN | 이미지 Figure를 처리 결과에 맞게 대응시킵니다. |
bEnable
- Default : false
Processing Unit Setting
FLImaging®은 모든 알고리즘에서 SIMD 및 Multi Thread를 지원하며, 부분적인 알고리즘에 대해 GPU 연산을 지원합니다. 더 자세한 설명은 Processing Unit를 참고하세요.
- Global
- Menu Pane의 Setting Property에서 설정할 수 있으며, 여기서 지정한 Processing Unit에 따라 이미지 처리가 수행됩니다.
- Local
- Global 설정에 종속되지 않으며, 개별적으로 Processing Unit을 설정할 수 있습니다.
- Optimal로 설정하면 현재 해당 알고리즘이 지원하는 최고 성능으로 적용됩니다.
4 예제 코드
COperationAdd operationAdd;
CFLImage fliSource, fliOperand, fliDestination;
CFLFigure flfSourceROI, flfOperandROI, flfDestinationROI;
CFLPoint<double> flpSourcePivot, flpOperandPivot, flpDestinationPivot;
//////////////////////////////////////////////////////
// Source ,Operand 이미지 로드 ,ROI 설정, Pivot 설정
//////////////////////////////////////////////////////
// 이미지 설정
operationAdd.SetSourceImage(fliSource);
operationAdd.SetOperandImage(fliOperand);
operationAdd.SetDestinationImage(fliDestination);
// ROI 설정
operationAdd.SetSourceROI(flfSourceROI);
operationAdd.SetOperandROI(flfOperandROI);
operationAdd.SetDestinationROI(flfDestinationROI);
// Pivot 설정
operationAdd.SetSourcePivot(flpSourcePivot);
operationAdd.SetOperandPivot(flpOperandPivot);
operationAdd.SetDestinationPivot(flpDestinationPivot);
// Operand를 사용하기 위한 OperationSource 설정
operationAdd.SetOperationSource(EOperationSource_Image);
// FillBlankColor 모드 설정
operationAdd.EnableFillBlankColorMode(true);
// Batch Processing 설정
operationAdd.EnableBatchProcessing(true);
// FigureTransformation 설정
operationAdd.EnableImageFigureTransformation(true);
////////////////////////////////////////////////////////////////
// CPU, Multi Thread를 사용하는 경우
CProcessingUnitCPUMulti puMulti;
puMulti.SetInstruction(CProcessingUnitCPU::EInstruction_Optimal);
operationAdd.SetProcessingUnit(puMulti);
// CPU, Single Thread를 사용하는 경우
CProcessingUnitCPU pu;
pu.SetInstruction(CProcessingUnitCPU::EInstruction_Optimal);
operationAdd.SetProcessingUnit(pu);
// GPU, Cuda를 사용하는 경우 단, 지원하는 알고리즘에 한함
CProcessingUnitCuda puCuda;
operationAdd.SetProcessingUnit(puCuda);
////////////////////////////////////////////////////////////////
operationAdd.Execute();
5 GUI 사용 실습
이번 실습에서는 Add
기능을 활용하며, Fixed View Preset은 2D 개발에 적합한 Expert Development Mode를 사용합니다.
5.1 Add Property 생성하기
-
Image Processing -> Image Operation -> Add로 이동하거나. Ctrl + F를 눌러 검색창에 Add를 입력하여 빠르게 찾을 수 있습니다.
-
Alias(별칭) 기능이 지원되므로 정확한 명칭이 아니더라도 비슷한 성격의 알고리즘을 쉽게 찾을 수 있습니다.
예 :Plus
를 검색하면Add
관련 알고리즘이 표시됩니다.Fig. Searching Add Fig. Searching Plus
-
-
검색된 Add를 더블클릭하여 Property 창을 생성합니다.
Add 기능의 설명은 Operation Add를 참고하세요.Fig. Property Add
5.2 이미지 설정
-
Source Image
로 사용할 이미지를 Image View에 불러온 뒤, 해당 View를Source View
로 설정합니다. -
Flower.flif 이미지를 1번 View에 불러오고, 이를
Source View
로 지정합니다.Fig. Source Image Fig. Source View -
연산 결과를 출력할 Destination View를 2번 View로 설정합니다.
Destination View
가None
으로 설정된 경우, 실행 시 결과 이미지가Source View
에 출력됩니다.
Fig. Destination View -
파라미터는 다음과 같이 설정하였습니다.
Operation Source
: ScalarOverflow Method
: ClampingScalar Value
: (100, 0, 0)
Fig. Parameters -
Execute 버튼 또는 단축키(F5) 를 눌러 실행합니다.
- 결과 이미지는 Destination View에 표시됩니다.
Fig. Destination Image
5.3 ROI 설정
-
ROI 설정을 위해 Source View 우클릭 후, Figure -> Create Figure에서 원하는 Figure를 선택할 수 있습니다.
ROI 기능의 설명은 ROI & Figure를 참고하세요.Fig. Create Figure -
Create Figure에서 Rect 선택 후, 이미지에 ROI를 지정합니다.
- 이미지에서 ROI를 지정하고자 하는 시작 지점에서 좌클릭 후, 드래그하여 끝 지점에서 다시 클릭합니다.
Fig. Draw Figure -
Figure 우클릭 후, Assign Figure 기능을 이용하여 Source View ROI로 지정해줍니다.
- Assign Figure를 통해, Property 창에서 Source View ROI가 지정된 것을 확인할 수 있습니다.
Fig. Assign Figure Fig. Source View ROI - 또 다른 방법으로, Figure 클릭 후 복사 (Ctrl + C) 및 Property 창의 Source View ROI 입력 부분 클릭 후 붙여넣기 (Ctrl + V)를 통해서도 Source View ROI 지정이 가능합니다.
-
Scalar Value
를 기존에 설정했던 (100, 0, 0)에서 (100, 100, 0)으로 변경하여 Execute 하면 지정한 ROI 부분만 연산이 된 것을 확인할 수 있습니다.Fig. Scalar Value Fig. Destination Image
5.4 Blank Color
-
Destination View 이미지 Clear 후,
Blank Color
파라미터 값을 설정하여 Execute 하면 연산 처리가 진행되지 않는 부분이 설정한Blank Color
값으로 처리되는 것을 확인할 수 있습니다.Blank Color
: (100, 100, 100)
Fig. Blank Color Fig. Clear File Fig. Destination Image
5.5 Image Figure Transformation
- Figure 우클릭 후, PushBack Figure to Image를 클릭하여 Figure를 Image에 pushback 할 수 있습니다.
![]() |
![]() |
- Property 창에서 Image Figure의 Transformation을 체크 후 Execute 하면, Destination 이미지에 Figure가 Transform되는 것을 확인할 수 있습니다.
