목록SynapticLab (242)
Data Analysis for Investment & Control
비선형 함수 연산을 위한 FPGA 기반의 부동 소수점 프로세서의 설계 (Design of a Floating Point Processor for Nonlinear Functions on an Embedded FPGA) Abstract - This paper presents the hardware design of a 32bit floating point based processor. The processor can perform nonlinear functions such as sinusoidal functions, exponential functions, and other nonlinear functions. Using the Taylor series and the Newton - Raphson met..
VHDL로 작성한 32bit 부동소수점 프로세서 중 곱셈기입니다. Altera의 Quartus2에서 설계하였습니다. 연산 원리는 대략 아래와 같습니다. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 덧셈/뺄셈기에 비해 곱셈기는 그 구조가 상대적으로 간단하다. 부동소수점 포맷이 부호, 지수부, 가수부로 나뉘어 있기 때문이다. 따라서 지수부끼리의 덧셈과 가수부끼리의 곱셈 결과를 조정하여 연산 결과를 만들어낸다. 이 과정에서 발생 가능한 zero, over..
VHDL로 작성한 32bit 부동소수점 프로세서 중 덧셈/뺄셈기입니다. Altera의 Quartus2에서 설계하였습니다. 연산 원리는 대략 아래와 같습니다. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 덧셈/뺄셈기는 각 오퍼랜드의 절대값과 양수인지 음수인지에 따라 아래와 같이 몇 가지의 경우로 연산을 분류할 수 있다. 즉, 오퍼레이션의 종류와 각 오퍼랜드의 부호와 크기에 따른 경우의 수를 분석하여 각 케이스에 맞는 연산 수행을 하도록 정의되어 있다...
역시 우리나라에서는 어떤 아이디어를 생각해 낼 지라도 당장 산업내에 적용할 수 없다면, 인정받기가 쉽지 않은 것 같다. 그럴 때면 그래도 외국은 좀 낫지 않을까 라는 생각이 드는 것이 사실이다. 기회를 만들고 준비해서 외국으로 나가야지 싶다. 지난 석사 2년 동안을 생각해 보면, 너무 현실감 없이 하고 싶은 연구만 해온게 아닌가하는 생각이 강하게 든다. 무작정 교수님이 닥치는대로 눈문 수만 늘리는 일에 동참해서 여기저기 쓸데 없는 논문만 내고, 논문 실적이 아무리 10편이 넘는다고 해봐야 과연 가치를 부여할 수 있는 페이퍼가 얼마나 될까? 더군다나 국내 대기업을 비롯한 회사들은 논문 실적은 아무런 도움도 되지 않는데, 역시 지방국립대라서 그런지 눈 가리고 귀도 막고 사는 것 처럼 살아왔다는 느낌이다. 내..
이진화 다음은 잡음제거를 위한 필터링 연산이다. 여기서는 cvErode라는 함수 하나로 간단히 구현된다. 약간 어려울 수 있는 부분은 라벨링 과정인데, 기존에 쓰던 라벨링 알고리즘은 이진화된 영상에서의 살아남은 덩어리들의 면적을 찾아서 라벨링하는 방법이었다. OpenCV에서도 cvBlob이라는 것을 사용해서 비슷하게 처리하는 것 같지만, 해당 함수를 찾다가 포기하고 윤곽선 찾기 함수 기반으로 하는 방법이 있길래 그걸 사용중이다. 함수는 cvFindContours인데, 새로 선언해 주어야 하는 변수가 몇 개 있다. IlpImage *image = cvCreateImage(cvSize(width, height), 8, 1); CvMemStorage *Storage = veCreateMemStorage(); ..
이전 글에서 카메라로부터 받은 각 픽셀의 데이터를 하나하나씩 IplImage 변수에 집어 넣는 것까지 했었다. 이제는 색상 기반의 영상 처리를 위해 기본적으로 해야 할 것들... RGB면 R, G, B, HSI(HSV)면 H, S, I 값으로 분리해서 Threshold시키는 작업을 해야한다. 그러기 위해서는 각 색상 데이터를 분리할 필요가 있는데, 이때 사용하는 것이 cvCvtPixToPlane 함수이다. 함수는 cvCvtPixToPlane(src, dst0, dst1, dst2, dst3)과 같은 형식인데, 함수 내부의 파라미터는 IplImage 변수이다. 함수를 사용하는 모드는 두 가지인데, 하나는 3개의 채널로 이루어진 데이터를 하나씩 분리하는 방법이고, 다른 하나는 4개의 채널로 이루어진 데이터를..
현재 OpenCV를 사용하려는 주 목적은 기존의 내가 만든 영상 알고리즘을 사용하여 스테레오 비전 영상을 처리하면 원하는 만큼의 프레임 처리율이 나오지 않기 때문이며, OpenCV 기술을 사용하면, 과연 어느 정도나 개선이 될까 궁금하기 때문이다. 따라서, 일단 OpenCV를 사용하여 기존의 처리를 그대로 재현해 내는 것이 첫번째 목표이다. 이미지에 대한 데이터나 헤더 정보가 없는 raw 데이터를 카메라로 부터 읽어와서 처리해야 하기 때문에 IplImage 변수를 선언하고 이에 대한 초기화 작업이 필요하다. 당연하겠지만, 단순히 IplImage->imageData에 데이터만 때려 넣는다고 해서 OpenCV가 제대로 인식할리 없다. 그렇다면 어느정도나 초기화 시켜줘야 할까? 내부 변수를 일일이 초기화시켜주..
에휴... 이건 뭐... 타겟 하드웨어가 좀 특수하니, 개발환경 자체가 달라지는 거라서 할 수 없다손 쳐도, 컴파일 하는거 알아내는 데만 이틀이나 잡아먹다니... 하긴, 나도 특수한 형태의 CPU를 개발하는 개발자로 나중에 이런식으로 개발환경을 꾸미지 않으면 안될지도 모르겠다... 우선은 #@$@$.cu라는 파일을 만들고 그 안에다가 코딩을 한 후, MSVS에 추가(소스파일 쪽)한다... 그리고, 해당 파일을 선택한 후, 마우스 오른쪽 버튼을 눌러 속성 창에서 아래와 같이 설정한다. 사용자 지정 빌드 단계 [명령줄] "$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin" -c -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler ..