본문으로 건너뛰기

순서도 모듈로 면적 및 밝기 측정 실습

레시피 개요

  • Intensity Analysis 레시피를 처음부터 개발하는 실습 과정

Recipe Flow

모듈 배치 및 디버그

  • 새로운 레시피를 생성하고 다음과 같이 모듈을 배치해주세요

New Recipe

  • 이미지를 선택합니다

gs_semimage1 선택

데이터셋 선택

  • GaussianLowPassFiltering 에 F9 또는 우클릭하여 중단점을 추가하여 "디버그/계속(F5)"을 실행합니다

중간 실행화면

  • GaussianLowPassFiltering 을 더블클릭하면 모듈이 실행되고 아래 썸네일 이미지가 생성됩니다
  • 오른쪽 모듈속성 창에서 수치를 변경한 다음 적용을 누르면 바로 적용되어 변경되는 것을 확인할 수 있습니다

모듈 디버그 화면

  • 중지를 누르고 IntensityThresholding을 클릭하여 오른쪽 모듈속성안에 Threshold값을 이미지 창에서 값을 참고하여 설정합니다

Threshold 화면

  • BuildROIs 모듈을 설정합니다

BuildROIs 화면

  • 중단점을 모두 해제하고 디버그/계속 눌러서 지금까지 했던 결과를 확인합니다

Binary 실행화면

  • 이미지 안에 구멍을 채우고 싶은 경우 "HoleFilling" 모듈을 추가합니다

HoleFilling추가

  • 영역별로 연산을 하기 위해서 RegionsExtraction 모듈을 연결합니다

RegionsExtraction추가

  • 영역안마다 Feature계산하는 "RegionsFeatures"을 연결하고 입력으로 원본이미지와 "RegionsExtraction" 결과를 입력합니다
  • 모듈을 우클릭하면 도움말을 볼 수 있습니다
  • Feature 안에는 ("width", "height", "area", "ratio", "extent", "solidity", "roughness", "equivalent", "compactness", "orientation", "circularity", "average_intensity")가 있습니다

RegionsFeatures

  • 추출된 영역을 이미지에 표시하고자 하는 경우에 "PaintRegionsBoundary"에 연결하고 색을 선택하면 볼 수 있습니다
  • 컬러이미지를 입력해야하기 때문에 "GrayToRGB" 모듈을 추가하여 입력으로 넣어야 합니다

PaintRegionsBoundary PaintRegionsBoundary모듈속성

RGB색 입력방법

색상팔레트 색상에 RGB값을 찾고 싶은 경우 팔레트를 검색하여 값을 찾아 입력할 수 있습니다

  • 나온 값을 연산하기 위해서 "CustomFuntion"을 추가로 연결해서 코드를 작성합니다
  • "CustomFunction" 모듈을 우클릭하여 사용자정의로 이동(Ctrl+U)을 선택하여 코드화면으로 전환합니다

사용자정의모듈

  • 연산값은 주로 List나 Dictionary 형태로 되어 있고, F9(중단점 추가)하여 값을 확인 할 수 있다

연산값 확인

주의사항
  • 값이 눈으로 보이는 패턴 개수보다 많은 경우 노이즈가 분할되는 경우가 있을 수 있습니다
  • Noise 제거 필터링과 Intensity Threshold를 노이즈를 먼저 제거해야 합니다
  • "CustomFunction" 안에 코드를 작성합니다
📜 CustomFunction 코드 보기
def CustomFunction3(input1, input2, input3):
output1 = input1
output2 = input2
output3 = input3

list_area = list()
list_intensity = list()

for region in input1 :

list_area.append(region['area'])
list_intensity.append(region['average_intensity'])

scale = 0.2 # 0.2nm/pixel
avg_area = np.mean(list_area) * scale * scale
avg_intensity = np.mean(list_intensity)

result_data = [avg_area, avg_intensity]


return result_data, output2, output3
  • IDBSDcollTemplate 모듈을 연결합니다
  • 결과이미지와 데이터를 저장하기 위해 Input1~2를 연결합니다

DCOLL모듈연결

  • 공용변수에 결과데이터를 저장할 경로를 입력합니다

저장경로

  • 모듈의 사용자정의로 이동하여 코드를 확인합니다
  • CD Variable 또는 SMF에 해당하는 Column값을 확인하고 변경합니다

DCOLL 변경

원격 실행 및 검증

  • 1개 이미지에 대해서 테스트가 끝났다면 여러 이미지에 대해서 검증이 필요합니다
  • 공용변수에 "daq_3_0"은 로컬이미지로 "배치실행"을 진행할 수 있습니다
  • "daq_3_1"은 서버에 저장된 이미지를 대상으로 "원격실행"으로 진행할 수 있습니다

원격실행 버튼

  • 원격실행에 경우 데이터셋을 선택한 후에 진행하면 "시뮬레이션"메뉴에서 확인가능합니다

시뮬레이션

패턴안에 패턴이 있어서 분리해야되는 경우

  • 패턴이 중첩이 되어 있는 경우 추가적인 모듈 연결이 필요합니다 패턴분할

  • BuildROIs 모듈과 IntensityThreshold 모듈을로 2가지 패턴을 분할합니다

패턴분할

  • Regions 의 center 속성을 이용해서 각각의 Center를 비교합니다
📜 CustomFunction 코드 보기
def CustomFunction3(input1, input2, input3):
output1 = input1
output2 = input2
output3 = input3

center1 = input1[0].center
center2 = input2[0].center

ma_x = center1[0] - center2[0]
ma_y = center1[1] - center2[1]

resultdata = [ma_x, ma_y]

return resultdata, output2, output3