TL;DR
SEM 구조 사진의 공극률을 측정하는 프로그램을 개발했습니다.
왜 만들었을까?
Contact Angle Calculator를 작업했던 연구실에서 외주를 받아서 프로젝트를 진행했습니다. 사용자가 비개발자이다보니 개발 기간 동안 ux적인 요소를 더 크게 고려했습니다.
기존에는 ImageJ를 이용해서 작업을 했는데 ImageJ를 사용하면서 느낀 불편을 개선하기 위해서 프로젝트를 시작했습니다.
외주로 진행한 프로젝트라 코드를 공개할 수 없어서 레포지토리 링크는 공유하지 않습니다.
담당
기획, 프론트엔드, 백엔드 모두 담당했습니다.
세부 내용
•
ImageJ는 하나의 threshold를 기준으로 공극(porosity, air gap)과 frame을 구분합니다. 따라서 유저는 이미지를 로드한 이후 직접 threshold를 찾아줘야는 불편함이 있습니다. 또한, TEM 이미지는 부분적으로 어둡거나 밝을 수 있기 때문에 하나의 threshold로는 정확한 porosity 영역을 구하기 힘듭니다.
•
이 프로젝트는 픽셀 밝기 히스토그램에서 local minima를 찾은 후 해당 값을 초기 threshold로 설정해줍니다. (나중에 유저가 직접 수정할 수 있습니다)
•
부분적으로 어둡거나 밝아서 threshold로 걸러지지 않는 부분은 유저가 직접 마킹해서 포함하거나 제외할 수 있습니다
•
이후 계산 결과를 확인할 수 있습니다.
•
연구 결과
회고
•
클라이언트 연산 성능 문제로 모든 연산을 백엔드에 위임하고 있는데, 때문에 네트워크 트래픽을 어떻게 줄일 수 있을지가 핵심적인 내용입니다. 이 프로젝트에서는 매 threshold마다 백엔드에서 연산을 해서 보내주는 방식을 사용하고 있는데, 지금 생각해보면 git이 동작하는 원리처럼 threshold의 변화에 따른 diff pixel 데이터를 보내주는 방식이었으면 트래픽을 더 절약할 수 있지 않았을까 생각됩니다.