현미경 이미지 인식 코드

소개

안녕하세요😊 저는 전자현미경을 사용해서 분석하는 업무의 일을 하고 있는데, 그러다보니 이미지를 분석할 일이 많이 있어요! (어떤 입자의 크기를 측정하거나, 두께를 측정하거나 등등...) 이제까지는 거의 이미지 안에 있는 입자 몇 개를 랜덤하게 선택해서 크기를 측정하거나 하는 방식으로 분석을 많이 해왔는데, 이번 스터디를 통해서 한번 자동화해보고자 합니다!

요즘은 아무래도 딥러닝으로 하는게 대세인 것 같긴 하지만,, 코딩에 미숙하다보니 잔마왕님이 올려주신 예시와 유사하게 gray scale을 활용한 segmentation부터 시작해보았습니다.

예시) 좌측의 이미지를 우측과 같이 입자에 따라 분류하는 것이 목표!

��흰색 배경에 녹색, 분홍색, 녹색 패턴이 있는 사진

진행 방법

보안 이슈로 실제 사용한 이미지들을 넣기가 어렵네요ㅠㅠ 다음번에는 오픈되어있는 이미지들을 활용해서 처리하여 공유해볼게요!!

Python은 대학생 때 가위바위보 코드를 만들었던 것이 마지막 아득한 기억이기 때문에😢 거의 chatgpt 4o 활용한 입코딩으로 진행했습니다.

1) 폴더 안에 있는 이미지 내의 모든 pixel에 대한 intensity 정보를 읽어와서 히스토그램 그래프를 그려달라고 했습니다.

2) 미세한 noise들이 있어 인식에 방해가 되어서 노이즈 제거 코드를 부탁했고 (실제 segmentation하고 싶은 영역은 60~100대의 intensity인데 noise 제거 전에는 해당 영역이 묻혀있다가 filtering 후 구분되는 것이 확인됨!)

다양한 유형의 데이터를 보여주는 일련의 그래프

3) 폴더 내에 있는 전체 이미지에 대한 intensity trend를 파악하고 싶어서, 폴더 내의 랜덤 이미지 3개의 필터링 후 histogram만 받는 것으로 코딩을 수정

두 번째 이미지 인스타그램 수를 보여주는 그래프

4) 분리해내고 싶은 입자 intensity 영역을 입력 받아서, 해당 영역만 분리해내도록 하는 코드를 작성 부탁했습니다. 각각 mask를 씌운 영역의 크기 입자간 거리는 csv 파일로 입력 받았습니다. 너무 큰 입자나 너무 작은 입자는 오류일 경우가 많아서 해당 입자는 결과에서 제외하는 코드를 추가했습니다.

결과와 배운 점

원래는 imageJ라는 상용 프로그램을 이용해서 한장한장 처리를 했었어야해서 시간이 많이 소요되었었는데 코드를 활용하면 아주 좋을 것 같아요!!

아직은 이미지 인식 정확도가 낮아서 개선이 필요할 것 같고, 잔마왕님이 하신 것처럼 최종적으로는 배포 파일을 제작하도록 GUI로 만들고 싶습니다.

가능하다면,,, 딥러닝으로 segmentation도 해보고 싶은데 가능할지 모르겠네요😢

2
2개의 답글
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 오후,
읽고 바로 써먹을 AI 소식만