roi
Module diagram
classDiagram
class roi {
}
class api {
}
class roi_calculator {
}
class roi_handler {
}
roi --> api
roi --> roi_handler
api --> roi_handler
roi_handler --> roi_calculator
data.transform.roi
ROI 좌표 계산 및 ROI 크롭, blind_mask 적용을 수행하는 ROIHandler 클래스를 제공합니다. Set-ROI 기능을 위한 API 클래스인 ROIHandlerAPI도 제공합니다.
ROIHandler
ROI 기능을 수행합니다. 이미지에 대한 ROI 좌표를 계산해 크롭하고, 크롭된 이미지에 blind_mask를 적용해 마스크 영역의 픽셀 값을 0으로 치환합니다.
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
roi_calculator_types
class-attribute
instance-attribute
roi_calculator_types = {'simple': RelativeBoxROI, 'advanced': PixelIntensityROI, 'auto': AutoRelativeBoxROI}
set
set(mode: str, blind_mask: Union[None, ndarray, str], image_only: bool = False, discard_outer_polygons: bool = False, det_blind_mask_threshold: float = 0.5, **kwargs)
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
apply_crop
apply_crop(image: Union[Image, ndarray, List[Union[Image, ndarray]]], return_revert_params: bool = False, warmup: bool = False, **data) -> Union[Dict, Tuple[Dict, Dict]]
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
apply_mask
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
__call__
__call__(return_revert_params: bool = False, warmup: bool = False, **data) -> Union[Dict, Tuple[Dict, Dict]]
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
_check_polygon_within_box
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
ROIHandlerAPI
Set-ROI 기능을 위한 API입니다.
Usage
# 핸들러 빌드. 아래는 simple mode의 예제 config이며, 자세한 설명은 ROIHandlerAPI.set() 함수 참고.
config = {
"mode": "simple",
"left": 0.0,
"top": 0.0,
"right": 1.0,
"bottom": 1.0,
"blind_mask": None,
}
error, roi_hander = ROIHandlerAPI.build(config)
# image에 대한 roi 계산. 리턴 결과 설명은 ROIHandlerAPI.apply() 함수 참고.
image = np.zeros((100, 100, 3), dtype=np.unit8)
error, roi_results = roi_handler.apply(image)
# roi 파라미터 변경
config["left"] = 0.1
error, _ = roi_handler.set(config)
# 변경된 파라미터로 roi 다시 계산
error, roi_results = roi_handler.apply(image)
Source code in SaigeToolkit/data/transform/roi/api.py
build
classmethod
build(config: Dict) -> ROIHandlerAPI
ROIHandlerAPI를 빌드합니다. Args: config (Dict): ROIHandlerAPI.set의 파라미터와 동일합니다.
Returns:
-
ROIHandlerAPI(ROIHandlerAPI) –빌드된 ROIHandlerAPI
Source code in SaigeToolkit/data/transform/roi/api.py
set
ROI 파라미터를 변경합니다.
Parameters:
-
config(Dict) –ROI 파라미터의 dict입니다. mode에 따라 다른 파라미터를 가집니다.
# simple mode: { "mode": "simple", # Simple ROI 모드. "left": float, # ROI의 왼쪽 경계. [0.0, 1.0) 범위의 실수. "top": float, # ROI의 위쪽 경계. [0.0, 1.0) 범위의 실수. "right": float, # ROI의 오른쪽 경계. (right, 1.0] 범위의 실수. "bottom": float, # ROI의 아래쪽 경계. (top, 1.0] 범위의 실수. "blind_mask": Optional[np.ndarray], # blind mask 이미지. None인 경우 blind 적용 안함. # np.ndarray인 경우 (dtype=uint8, shape=(H_roi, W_roi))이며 픽셀 값은 0 또는 1. # mask의 값이 1인 영역이 학습/검사 시 마스킹됩니다. # polygons에는 blind_mask가 적용되지 않습니다. } # advanced mode: { "mode": "advanced", # Advanced ROI 모드. "intensity": List[int], # 필터링할 [최소, 최대] 픽셀값 범위. 각 값은 [0, 255] 범위의 정수. "expansion": int, # 필터링된 픽셀 영역에 대한 확장/축소 정도. [-10, 10] 범위의 정수. "inversion": bool, # True인 경우 필터링된 픽셀 영역을 반전. "offset_left": float, # ROI 박스의 왼쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "offset_right": float, # ROI 박스의 오른쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "offset_top": float, # ROI 박스의 위쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "offset_bottom": float, # ROI 박스의 아래쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "blind_mask": Optional[np.ndarray], # blind mask 이미지. None인 경우 blind 적용 안함. # np.ndarray인 경우 (dtype=uint8, shape=(H_roi, W_roi))이며 픽셀 값은 0 또는 1. # mask의 값이 1인 영역이 학습/검사 시 마스킹됩니다. # polygons에는 blind_mask가 적용되지 않습니다. }
Source code in SaigeToolkit/data/transform/roi/api.py
apply
image에 대한 ROI 좌표 및 기타 결과를 계산합니다.
Parameters:
-
image(ndarray) –ROI를 적용할 입력 이미지.
Returns:
-
Dict(Dict) –ROI 계산 결과 dict 입니다. mode에 따라 다른 결과 값들을 가집니다.
Source code in SaigeToolkit/data/transform/roi/api.py
api
ROIHandlerAPI
Set-ROI 기능을 위한 API입니다.
Usage
# 핸들러 빌드. 아래는 simple mode의 예제 config이며, 자세한 설명은 ROIHandlerAPI.set() 함수 참고.
config = {
"mode": "simple",
"left": 0.0,
"top": 0.0,
"right": 1.0,
"bottom": 1.0,
"blind_mask": None,
}
error, roi_hander = ROIHandlerAPI.build(config)
# image에 대한 roi 계산. 리턴 결과 설명은 ROIHandlerAPI.apply() 함수 참고.
image = np.zeros((100, 100, 3), dtype=np.unit8)
error, roi_results = roi_handler.apply(image)
# roi 파라미터 변경
config["left"] = 0.1
error, _ = roi_handler.set(config)
# 변경된 파라미터로 roi 다시 계산
error, roi_results = roi_handler.apply(image)
Source code in SaigeToolkit/data/transform/roi/api.py
build
classmethod
build(config: Dict) -> ROIHandlerAPI
ROIHandlerAPI를 빌드합니다. Args: config (Dict): ROIHandlerAPI.set의 파라미터와 동일합니다.
Returns:
-
ROIHandlerAPI(ROIHandlerAPI) –빌드된 ROIHandlerAPI
Source code in SaigeToolkit/data/transform/roi/api.py
set
ROI 파라미터를 변경합니다.
Parameters:
-
config(Dict) –ROI 파라미터의 dict입니다. mode에 따라 다른 파라미터를 가집니다.
# simple mode: { "mode": "simple", # Simple ROI 모드. "left": float, # ROI의 왼쪽 경계. [0.0, 1.0) 범위의 실수. "top": float, # ROI의 위쪽 경계. [0.0, 1.0) 범위의 실수. "right": float, # ROI의 오른쪽 경계. (right, 1.0] 범위의 실수. "bottom": float, # ROI의 아래쪽 경계. (top, 1.0] 범위의 실수. "blind_mask": Optional[np.ndarray], # blind mask 이미지. None인 경우 blind 적용 안함. # np.ndarray인 경우 (dtype=uint8, shape=(H_roi, W_roi))이며 픽셀 값은 0 또는 1. # mask의 값이 1인 영역이 학습/검사 시 마스킹됩니다. # polygons에는 blind_mask가 적용되지 않습니다. } # advanced mode: { "mode": "advanced", # Advanced ROI 모드. "intensity": List[int], # 필터링할 [최소, 최대] 픽셀값 범위. 각 값은 [0, 255] 범위의 정수. "expansion": int, # 필터링된 픽셀 영역에 대한 확장/축소 정도. [-10, 10] 범위의 정수. "inversion": bool, # True인 경우 필터링된 픽셀 영역을 반전. "offset_left": float, # ROI 박스의 왼쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "offset_right": float, # ROI 박스의 오른쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "offset_top": float, # ROI 박스의 위쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "offset_bottom": float, # ROI 박스의 아래쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "blind_mask": Optional[np.ndarray], # blind mask 이미지. None인 경우 blind 적용 안함. # np.ndarray인 경우 (dtype=uint8, shape=(H_roi, W_roi))이며 픽셀 값은 0 또는 1. # mask의 값이 1인 영역이 학습/검사 시 마스킹됩니다. # polygons에는 blind_mask가 적용되지 않습니다. }
Source code in SaigeToolkit/data/transform/roi/api.py
apply
image에 대한 ROI 좌표 및 기타 결과를 계산합니다.
Parameters:
-
image(ndarray) –ROI를 적용할 입력 이미지.
Returns:
-
Dict(Dict) –ROI 계산 결과 dict 입니다. mode에 따라 다른 결과 값들을 가집니다.
Source code in SaigeToolkit/data/transform/roi/api.py
roi_calculator
ROICalculator
RelativeBoxROI
Bases: ROICalculator
이미지 크기에 비례하는 상대좌표 박스로 ROI를 계산합니다.
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
set
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
__call__
__call__(image: Union[Image, ndarray], get_intermediate_results: bool = False, warmup: bool = False, **data) -> Dict
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
PixelIntensityROI
Bases: ROICalculator
픽셀값이 intensity 범위에 들어오는 픽셀만 필터링한 뒤, 필터링 된 픽셀들의 컨투어를 찾고,
가장 면적이 큰 컨투어를 감싸는 최소 박스로 ROI를 계산합니다.
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
set
set(intensity: Union[Tuple[int, int], List[int]], expansion: int, inversion: bool, offset_left: float, offset_right: float, offset_top: float, offset_bottom: float) -> None
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
__call__
__call__(image: Union[Image, ndarray], get_intermediate_results: bool = False, warmup: bool = False, **data) -> Dict
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
AutoRelativeBoxROI
Bases: RelativeBoxROI
RelativeBoxROI class with automatic coordinate calculation.
Monostate pattern applied to prevent ROI coordinate mismatch between train ~ validation dataset.
Attributes:
-
left(float) –ROI coordinates.
-
top(float) –ROI coordinates.
-
right(float) –ROI coordinates.
-
bottom(float) –ROI coordinates.
-
is_ready(bol) –Whether auto ROI coordinates is set.
-
image_hw(Optional[List[int]]) –dataset image size.
-
discard_outer_polygons(bool) –Flag for discarding polygons outside of current ROI region.
-
expand_ratio–Ratio for expanding ROI region. Larger value means more padding.
Example
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
__shared_state
class-attribute
instance-attribute
__shared_state = {'_is_ready': False, '_image_hw': None, '_left': -1.0, '_top': -1.0, '_right': -1.0, '_bottom': -1.0}
REGION_EXPAND_RATIO
class-attribute
instance-attribute
_check_auto_roi_is_ready
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
__call__
autoupdate_roi_coordinate
Automatically update ROI coordinate using dataset information.
Returns success flag.
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
_expand_region_xyxy
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
_fit_region_into_img_size
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
roi_handler
ROIHandler
ROI 기능을 수행합니다. 이미지에 대한 ROI 좌표를 계산해 크롭하고, 크롭된 이미지에 blind_mask를 적용해 마스크 영역의 픽셀 값을 0으로 치환합니다.
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
roi_calculator_types
class-attribute
instance-attribute
roi_calculator_types = {'simple': RelativeBoxROI, 'advanced': PixelIntensityROI, 'auto': AutoRelativeBoxROI}
set
set(mode: str, blind_mask: Union[None, ndarray, str], image_only: bool = False, discard_outer_polygons: bool = False, det_blind_mask_threshold: float = 0.5, **kwargs)
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
apply_crop
apply_crop(image: Union[Image, ndarray, List[Union[Image, ndarray]]], return_revert_params: bool = False, warmup: bool = False, **data) -> Union[Dict, Tuple[Dict, Dict]]
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
apply_mask
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
__call__
__call__(return_revert_params: bool = False, warmup: bool = False, **data) -> Union[Dict, Tuple[Dict, Dict]]