맥 팁들

폴더 내 모든 이미지를 Morphology 연산하는 한줄 명령어

제갈티 2024. 9. 13. 10:57

모폴로지 연산중 하나인 Erode(갉아먹기) 연산하는 과정

 

$ for fn in *.png; do convert -morphology Erode Octagon "${fn}" +write e_"${fn}"; done; tput bel

- 현재 폴더 안에 있는 모든 png 이미지를 갉아먹기(Erode) 연산하는 명령어 입니다. 그리고 파일명 앞에 "e_"라는 접두어를 붙어서 저장하게 합니다.

- 그러면 기존의 이미지는 그대로 남고 갉아먹은 이미지가 만들어져 추가로 저장이 되겠죠.

- morphology Erode Octangon 이라는 옵션은, 우선 모폴로지 연산(형태를 바꾸는 연산)을 한다는 의미고요 .. 그중에서도 갉아먹기 연산을 한다는 뜻입니다. 형태적 연산은 그빆에도 Dilate, Erode, Thinning, Skelotonize 등 다양하게 존재합니다. 그리고 옥타곤이라는 변수는 6각형 모양의 커널을 사용하여 육방연속 방향으로 연산한다는 뜻입니다.

- 마지막에 붙어있는 tput bel 명령은 모든 작업이 다 끝나면 맥에서 땡~하고소리를 내주라는 명령입니다. 인간이 작업완료를 인식하도록 말입니다.  참고로 맥오에스에선 쉬리(Siri)를 사용하여 "영상처리가 모두 잘 끝났습니다!" 라는 이쁜 언니(유나)의 음성이 나오게 할수도 있습니다. 이건 다음번에 다뤄 보도록 하지요~

- 사실은 저기서 convert 부터 ";" 까지만 이미지매직의 처리 명령어이고 나머지는 Linux의 Shell 스크립트 입니다. for loop 같은 제어문은 이미지매직에 없거든요. 그래서 셸 스크립트와 매직 스크립트를 섞어서 사용함으로써 강력한 반복 스크립트를 만들수 있는 것이죠.요즘 채용시장에서 Bash shell 같은 리눅스 셸스크립트 사용자의 몸값이 높아고 합니다만... ^^

- 저런 유형의 영상처리 명령어는 딥러닝에서 이미지 오그먼테이션(Augmentation) 을 하는 용도로도 활용이 가능합니다. 그리고 지난번 게시물에서 알려드린 GNU Parallel 명령어와 함께 사용하면 고속 병렬처리로 오그먼테이션이 가능해 집니다.

- 이는 또한, Albumentation같은 패키지로 수행하는 학습타임 오그먼테이션이 아닌, 디자인타임(데이타 전처리 타임) 데이타 오그먼테이션 이므로 데이타 증강의 기록을 그대로 사후에도 확인 및 유지보수가 가능한 아주 강력한 오그먼테이션 기법중 하나죠/

갉아먹기(Erode)가 수행된 이미지
오리지널 이미지

 

- 사실 Erode 나 Dilate(부풀리기) 같은 모폴로지 연산들은 컬러 이미지가 아닌 세그먼테이션 Mask 같은 흑백이미지(Binary)에서만 작동하던 연산이었습니다. 하지만 이미지매직 에서는 컬러이미지에서도 작동하도록 기능을 확장한거 같습니다.

대단하지요| ~?