Constant False Alarm Rate (CFAR)은 기본적으로 테스트하고자 하는 위치의 cell과 주변 cell의 관계를 보고 테스트 cell이 Target 인지 아닌지를 구분하는 알고리즘이다. 주변 cell과의 관계를 어떤 방식으로 비교하는가에 따라 여러가지 알고리즘이 존재한다. CA-CFAR, GO-CFAR, SO-CFAR, OS-CFAR, VI-CFAR, OSVI-CFAR등이 있다. 이 많은 알고리즘 중 간단하고 기본적인 CA-CFAR과 OS-CFAR에 대해 알아보자. CA-CFAR (Cell Average CFAR) CA-CFAR의 원리는 위 그림과 같다. 좌우의 Reference Cell의 평균에 Scale Factor T를 곱하고, ADT (Average Decision Threshold)를 합하여 CUT가 타겟인지 아닌지를 구분한다. ADT는 신호의 white noise를 고려하기 위해 더해준다. Scale Factor T와 ADT는 아래와 같은 공식으로 사용할 수 있다. 사용하려는 시스템에 따라 공식은 달라질 수도 있다. Pfa는 False Alarm 발생 확률을 나타내고, M과N는각 좌우의 Reference Cell의 개수를 나타낸다. OS-CFAR (Order Static CFAR) OS-CFAR의 원리는 위 그림과 같다. 좌우의 reference cell중 K번째 큰 값의 cell을 Reference Cell의 대표 값으로 정해 CUT가 타겟인지 아닌지를 구분한다. 보통 전제 reference cell의 크기 순에서 (3*N)/4 번째 cell이 성능이 좋다고 알려져 있다. CFAR 사용 예 아래 사진은 위 두 cfar을 사용한 예다. 파란색은 신호이며, 붉은 색은 char을 사용해 만든 threshold이다. 이 threshold보다 큰 값의 신호가 있는 위치에 실제 Tar...
Windows 10에서는 미라캐스트를 사용한 무선 디스플레이연결을 지원한다. 하지만, 만약 크롬캐스트(Chromecast)를 사용해 윈도우 화면을 미러링 하고자 할 때, 구글 크롬 브라우저를 사용하면 쉽고 편하게 할 수 있다. https://www.google.co.kr/intl/ko/chrome/ VLC에서도 비디오 화면을 미러링 할 수 있다고 하는데, 잘 동작하지 않고 윈도우 화면 전체를 미러링하지 않아 크롬 브라우저를 사용하고 있다. 크롬 캐스트 윈도우 화면 전송 방법 0. 크롬 캐스트 디바이스와 windows pc는 같은 네트웍에 연결되어 있어야 한다. (같은 공유기에 연결되어 있어야 한다.) 1. 크롬 브라우저의 우측 상단의 메뉴 > 전송을 클릭하면, 현재 사용가능한 크롬캐스트 디바이스 항목을 볼 수 있다. 2. 편의에 따라 탭 전송 아이콘에서 우측 버튼을 클릭하여 항상 표시되게 설정할 수도 있다. 3. 윈도우 화면 전체를 전송하고자 할 때는 탭 전송의 소스에서 '데스크톱 전송'을 선택하고, 바로 위의 크롬캐스트 디바이스를 클릭하면 된다. ** 소스는 미러링 중에는 변경되지 않는다. 먼저 소스를 선택하고 미러링해야 한다. 4. 화면 전송을 끝내고자 할 때는, 탭 전송에서 화면 전송중인 크롬캐스트 디바이스를 클릭하거나, 크롬 브라우저를 종료하면 된다.
하드 정리 중 예전에 만든 아두이노에서 심박센서를 사용하여 심박수 측정하는 소스 코드가 있어, 이를 블로그 글로 남긴다. 인터넷 쇼핑몰에서 쉽게 구할 수 있는 저렴함 센서가 사용 되었으며, 연결은 아래 그림과 같이 연결 되었다. 심박센서의 하트 부위에 손가락을 올려 놓고, 아날로그 A0값을 읽으면 심박의 움직임에 따라 A0값이 변하는 동작이 간단한 센서이다. 아래 그림의 왼쪽은 일정 시간 간격 마다 A0값을 읽어 시리얼 플로터로 본 심박에 따른 데이터이고, 오른쪽은 평균 필터를 사용해 노이즈를 제거한 후 시리얼 플로터로 본 데이터이다. 심박수는 수집된 데이터에서 threshold를 넘는 peak들의 시간 간격을 측정하여 계산한다. peak위치를 찾는 방법은 여러 가지 방법이 있으나, 소스에 구현된 방법은 신호의 기울기가 +에서 0또는 -로 바뀌는 위치를 peak으로 선정하도록 하였다. 심장이 t시간동안 N회 뛰는 경우 심박수는 heart rate bpm = (N/t)*60 을 표현 할 수 있다. threshold는 데이터를 보고 임의로 정했으며, 측정 데이터에 따라 자동으로 정하고 싶을 때는 cfar 같은 방법을 사용하면 된다. 소스는 아래와 같다. #define heartbit_adc_threshold 511 #define meanfilter_size 5 #define heartbit_tick_buffer_size 10 ...
본 글은 eigen 라이브러리의 matrix 간단한 사용법에 관한 글을 싣고 있다. Eigen 라이브러리는 http://eigen.tuxfamily.org/ 에서 다운받아 사용할 수 있다. 별도의 라이브러리 빌드 없이 헤더만 불러와 사용할 수 있어 편리하다. 개인적으론 opencv의 Mat보다 Eigen의 Matrix가 사용하기 편한 것 같다. 라이브러리 경로 project 설정 추가 다운받은 라이브러리 파일은 압축해제 후 project 설정에서 경로만 추가하면 된다. 라이브러리 헤더 #include <Eigen/Dense> namespace 아래와 같이 Eigen namespace를 사용하도록 설정하던가, 아니면, 호출 때 마다 Eigen::을 사용하면 된다. using namespace Eigen; matrix 데이터 형식 Matrix 타입의 맨 뒤는 matrix내 데이터의 형식을 의미한다. EIGEN_MAKE_TYPEDEFS_ALL_SIZES(int, i) EIGEN_MAKE_TYPEDEFS_ALL_SIZES(float, f) EIGEN_MAKE_TYPEDEFS_ALL_SIZES(double, d) EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<float>, cf) EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<double>, cd) matrix 타입 Eigen의 matrix 타입은 고정 사이즈와 가변 사이즈 두가지가 있다. 아래는 두 타입을 비교한 코드다. Dynamic-Size의 matrix타입은 사용시 ...
카메라와 호스트 프로세서사이의 인터페이스로 CSI가 있다. CSI (Camera Serial Interface)는 MIPI(Mobile Industry Process Interface, https://www.mipi.org/ ) alliance에 규정되어 있다. CSI는 CSI-1, CSI-2, CSI-3가 있다. CSI-1 CSI-1은 카메라와 호스트 프로세서 간의 인터페이스를 정의하는 MIPI의 오리지널 표준이고, 이는 CSI-2와 CSI-3로 발전되고 있다. 이미지 센서의 컨트롤은 CCI (Camera Control Interface) I2C, I3C릍 사용한다. 컨트롤 명령어 세트 CCS(Camera Command Set) V1.0은 2017년 11월에 출시되었으며, CSI-2를 사용하여 이미지 세트를 제어하기 위한 표준 기능 세트를 정의한다. CSI에서 지원되는 이미지 포맷은 RGB, RAW, YUV, JPEG가 있으며, Payload/Header보호를 위한 CRC/ECC를 지원한다. CSI-2 CSI-2는 모바일 및 기타 시장에서 가장 널리 사용되는 카메라 인터페이스라고 한다. CSI-2는 아래와 같은 계층 구조를 가진다. 물리 계층으로 MIPI C-PHY/D-PHY를 지원하고 CSI-2 프로토콜은 전송계층과 응용 계층을 포함하고 있다. CSI-2는 v1.0이 2005년, v2.0은 2017년 4월, v3.0은 2019년 9월에 출시되었다. V2.0은 RAW-16 및 RAW-20을 지원하고, 가상채널은 4에서 32로 늘어났다. 또한 LRTE(Latency Reduction and Transport), DPCM(Differential Pulse-Code Modulation) 압축 및 스크램블을 통해 사용 전력을 줄였다. LRTE는 시스템 비...
댓글
댓글 쓰기