2024/09/12 9

[C++] 맥에서 OpenCV로 영상처리하기 (XCode, C++, GUI앱 개발)

- 맥오에스에서 화면에 빈 GUI 창을 하나 만들고 거기에 이미지 파일(png, jpg)을 드래그 앤 드롭하면 그림처럼 좌측에 이미지가 표시되며 마우스로 이미지 속 타깃 물체 주변을 드래깅 하여 빨간 바운딩박스를 실시간에 만든 후, 드래깅을 멈추면 박스 내 이미지 영역 안에서 수학적 영상처리 방식의 Segmentation 알고리즘인 Grabcut() 함수를 사용해 마스크를 만들고 그 마스크를 저장하는 기능을 만들려 합니다.- 아시다시피 맥에서 C++ 이라는 언어로 GUI 프로그램을 만드는 방법은 몇 가지가 있지만 다들 매우 복잡합니다. Qt-Creator 나 CVUI 같은 걸 사용하는 방법이 있긴 하지만, 초보자가 넘볼만한 개발환경은 아닌 것 같습니다.- 하지만 Openframeworks(줄여서 OF) ..

앱개발 2024.09.12

맥에서 앱을 만들고 앱스토어에 등록하기

openFrameworks와 ofxOpenCV를 사용하여 만든 Mac 앱을 앱스토어에 올리는 과정은 다음과 같습니다:1. 앱 준비   - 앱이 앱스토어 가이드라인을 준수하는지 확인맥용 앱을 App Store에 제출하기 전에 가이드라인 준수 여부를 확인하는 방법은 다음과 같습니다:## 가이드라인 숙지Apple의 App Store 심사 지침을 철저히 검토하세요. 이 지침은 앱의 안전성, 성능, 비즈니스 모델, 디자인 및 법적 요구사항 등을 다룹니다[1][2].## 주요 체크포인트### 안전성 및 콘텐츠- 유해하거나 공격적인 콘텐츠가 없는지 확인- 필요한 경우 신고/차단 기능 구현[5]- 어린이용 앱의 경우 특별 지침 준수### 기능 및 성능- 앱이 독립적으로 작동하며 지정된 컨테이너 영역 내에서만 데이터를 ..

앱개발 2024.09.12

슈바르츠실트의 반지름

- 아인슈타인은 일반상대성이론을 통해서 중력장 방정식을 만들었지만 수학이 딸려서 그 자신은 일반해를 풀지 못했다고 합니다.- 중력장 방정식은 우변에는 질량과 에너지, 좌변에는 그 질량이 만들어내는 공간왜곡을 수학적으로 표현한 방정식입니다.- 중력장 방정식을 최초로 푼 사람은 슈바르츠실트 란 사람으로, 1차 대전당시 40대의 나이임에도 군대에 자원입대해 포병으로 근무중 쉬는 시간에 중력장방정식의 해를 구했다고 하는데요 ..- 슈바르츠실트가 방정식을 풀어보니 이상한 점이 발견됬는데, 방정식의 해 중에서 태양과 같은 무거운 천체가 중력에의해 특정반지름 내로 수축하면 시공간이 닫혀버리는 특이한 해(블랙홀의 가능성)를 발견하게 됩니다!- 그래서 사건의지평선 반지름을 슈바르츠실트 반지름이라고 부르게 되었다고 하지요..

다큐 수집 2024.09.12

귀 속에서 일어나는 임피던스 매칭

- 보다시피 일부는 반사되어 돌아가고 파동의 전달이 약해지거나 왜곡됩니다.- 매질 간에 임피던스 매칭이 안되면 이렇게 됩니다. 신호전달의 왜곡과 손실이 발생하죠. - 여기서도 마찬가지 입니다. 매질 변화가 공간이 아닌 선상에서 일어난다는 차이만 있을뿐 동일하게 왜곡이 발생하죠.소리나, 전파, 그리고 진동과 같은 동적인 신호를 수신하는 거의 모든센서는 임피던스 매칭(Impedance Matching) 회로가 필요합니다.임피던스(impedance) 는 변하는 신호에대한 일종의 교류저항(신호 전달저항)을 말하죠. 말은 교류라고 했지만 실은 교류는 주파수에 따라 직류도 될수 있습니다.요즘은 아두이노(arduino) 라는 편리한 오픈소스 하드웨어 덕분에 각종 센서를 위한 임피던스 매칭회로를 손쉽게 얻을수 있는 세..

기타 2024.09.12

[파이썬] ComfyUI에 이미지 스펙트럼 노드를 만들어 보았습니다.

- 어떤 활용이 가능할진 아직 모르겠지만 업계 최초로 ComfyUI에 입력된 이미지의 푸리에 스펙트럼을 만드는 Node 를 만들어 보았습니다.- 파이썬 패키지로 torch  와 scipy, pillow, 그리고 numpy 등을 사용했습니다.- ComfyUI 에 이미지 뒤집기나 이진화, 에지검출 등의 간단한 노드만들기는 쉬우나 주파수도메인에서의 변환이나 필터링 같은걸 만드는 건 꽤나 어렵더군요.. 왜냐하면 이미지데이타를 텐서로 바꾸어서 CUDA 메모리상에서 처리해ㅔ 주어야하기 때문입니다.- 그래도 한번 만들어 봤다는 ~import torchimport numpy as npfrom PIL import Image, ImageOps, ImageFilterfrom scipy.fft import fft2, ffts..

딥러닝 2024.09.12

우리동네 시간대별 강우량을 알려주는 터미널 명령어

- 그동네의 시간대별 강우량을 알려주는 터미널 명령어 입니다.맥오에스 터미널을 열고 ​$ finger 동네이름@graph.no​리고 치면 되는데, 가령 서울이라면​$ finger seoul@graph.no ​라고 치면 됩니다.​혹시 finger 명령이 설치가 안되있다면 $ brew install finger 처럼 맥용 패키지매니져로 설치하면 됩니다.여름에 요긴합니다~가로축은 시간, 세로축은 강우량 입니다.기호에서 | 는 비, = 는 구름, 등등.. 아래에 기호로 설명이 되 있고시간대별 구름의 높이는 좌측에 온도를 나타내며 시간대별 비의 높이는 강우량을 나타냅니다.글로벌 기상센터가 제공하는 데이타라 아주 정확하다고 합니다~.

맥 팁들 2024.09.12

[파이썬] Notch Filtering 으로 모아레 패턴 제거하기

- 노치 필터는 대역필터(Band Pass Filter) 중에서 스펙트럼 대역폭이 매우 좁은 특수한 필터를 말합니다.- 1차원 신호에서와 마찬가지로 이미지와 같은 2차원 신호에서도 마찬가지로 노치필터링은 가능한데요..- 그림과 같이 수직이나 수평방향 줄무늬 노이즈(아마도 저주파 교류전원에 의한 간섭? 형광등 주파수와의 교란??) 를 제거하는데 종종 쓰입니다. 당근, 경사진 방향의 줄무늬 필터링도 가능하구요.- 처리 절차는 대충 이러합니다:  왜곡된 이미지 입력> 2차원 푸리에변환 > 진폭 스펙트럼 > 줄무늬에 해당하는 공간주파수 제거 > 푸리;에 역변환 > 필터링된 이미지.import cv2import numpy as npimport tkinter as tkfrom PIL import Image, Ima..

[파이썬] 2차원 푸리에변환을 12bit 버전으로 구현해보았습니다.

- 제조업이나 산업쪽에서는 종종 8비트 대신 12비트로 이미지를 센싱하는 경우가 있죠. 화소의 계조를 높여서 이미지의 데이타 분해능을 높이고 더 정밀한 측정이나 계조값 기반 리그레션 등을 하기위함 인데요..- 그렇게 만들어진 12비트 이미지는 8비트 체계로 작동하는 일반 글카나 모니터로는 볼수도없고 일반 S/W로는 영상처리도 불가능합니다.- 이미지 디스플레이에서부터 히스토그램, 이진화, 콘트라스트 변조나 에지 검출 등등의 계조값을 다루는 거의 모든 영상처리 루틴을 새로 개발해야 하죠.- 그래서 보통은 12비트를 8비트 이미지로 컨버팅한후 표시하거나 8비트 영상처리를 하거나하여 딥러닝에 입력하는 등의 만행을 저지르죠. 쉬운방법이긴한데, 그러면 애초에 애써 12비트로 센싱한 의미가 사라지죠.- png 이미지..