KR101270173B1 - 디지털 이미지에서 특징점을 추출하는 방법 및 장치 - Google Patents

디지털 이미지에서 특징점을 추출하는 방법 및 장치 Download PDF

Info

Publication number
KR101270173B1
KR101270173B1 KR1020070109677A KR20070109677A KR101270173B1 KR 101270173 B1 KR101270173 B1 KR 101270173B1 KR 1020070109677 A KR1020070109677 A KR 1020070109677A KR 20070109677 A KR20070109677 A KR 20070109677A KR 101270173 B1 KR101270173 B1 KR 101270173B1
Authority
KR
South Korea
Prior art keywords
feature points
pixels
processors
image
convolution operation
Prior art date
Application number
KR1020070109677A
Other languages
English (en)
Other versions
KR20090020452A (ko
Inventor
권범준
최태호
정희진
김건호
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US12/196,720 priority Critical patent/US8306366B2/en
Publication of KR20090020452A publication Critical patent/KR20090020452A/ko
Application granted granted Critical
Publication of KR101270173B1 publication Critical patent/KR101270173B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration by the use of local operators
    • G06T5/73

Abstract

본 발명은 복수 개의 프로세서들을 가지는 멀티 프로세서 시스템에서 이미지의 특징점을 추출하는 방법에 관한 것으로, 본 발명에 의하면 복수 개의 프로세서들이 특징점 추출을 위한 각 단계들에서 필요한 작업들을 분담하여 병렬적으로 수행하므로, 컨볼루션 연산, 가우시안 차 계산, 그라디언트 계산, 디스크립터 계산 등에 소요되는 시간이 줄어들게 되므로 이미지에서 특징점을 추출하는 데 걸리는 전체적인 시간을 크게 줄일 수 있다.

Description

디지털 이미지에서 특징점을 추출하는 방법 및 장치 {Method and apparatus for extracting feature points from digital image}
본 발명은 디지털 이미지에서 특징점을 추출하는 방법에 관한 것으로, 더욱 상세하게는 복수 개의 프로세서들을 가지는 멀티 프로세서 시스템에서 효율적으로 특징점을 추출하는 방법에 관한 것이다.
특징점(feature point)는 디지털 이미지의 특징을 나타낼 수 있는 점으로서, 다른 점들과 구별될 수 있는 점들이며, 일반적으로 물제의 경계, 꼭지점 등에 위치한다. 사진의 크기와 내용에 따라 달라질 수 있으나, 보통 사진 한 장 당 수천개의 특징점이 추출된다.
특징점은 이미지 매칭에서 매우 중요한 역할을 하기 때문에, 이미지 프로세싱이나 컴퓨터 비전 분야에서 가장 필수적인 작업들 중 하나이다. 이미지 매칭은 특징점을 이용하여 동일한 물체를 촬영한 두 개의 사진들에서 대응되는 부분을 찾아내는 작업인데, 물체/장면 인식, 3차원 구조 계산, 스테레오 매칭, 동작 추적, 파노라마 이미지 생성 등의 다양하게 응용될 수 있다.
도 1은 이미지의 특징점을 이용하여 파노라마 이미지를 생성하는 과정을 나 타낸 순서도이다.
단계 110에서, 각 이미지들의 특징점을 추출한다.
단계 120에서, 각 이미지들에서 추출된 특징점들을 비교하여, 대응되는 특징점들이 있는지 탐색한다.
단계 130에서, 대응되는 특징점들을 토대로 이미지의 중첩되는 부분을 서로 연결시킨다.
단계 140에서, 이미지가 연결되는 부분에 대해 블렌딩(blending) 작업을 수행한다. 서로 다른 밝기와 노출을 가지고 있는 이미지들을 단순히 연결만 시켜 놓으면 두 장의 이미지가 겹쳐지는 경계가 뚜렷이 나타나므로, 블렌딩 작업으로 연결 부위의 경계를 자연스럽게 변화시킨다.
이와 같이 다양한 분야에서 응용되는 특징점들은 물체의 경계, 꼭지점 등에서 나타나기 때문에, 동일한 물체를 촬영한 사진이라 하더라도 이미지의 스케일이 달라지거나, 물체를 촬영한 관점이 변화하는 경우 달라지기 쉽다.
D.Lowe는 SIFT(Scale Invariant Feature Transform)이라고 불리는 특징점 추출 알고리즘을 고안하였다. 이 알고리즘에 의해 추출된 특징점들은 이미지의 스케일, 회전, 왜곡, 3D 관점 변화 등에 의해 영향받지 않는 좋은 특성을 가진다.
도 2는 SIFT 알고리즘을 이용하여 특징점을 추출하는 과정을 나타낸 순서도이다.
단계 210에서, 디지털 이미지에 대하여 가우시안 필터를 이용하여 레벨을 변화시키며 단계적으로 블러(blurring) 작업을 수행한다. 이 때, 이미지의 크 기(scale)를 변화시키며 블러링 작업을 반복한다.
단계 220에서, 동일한 스케일에서 단계적으로 블러된(blurred) 이미지들 간의 가우시안 차(DoG, Difference of Gaussian)를 계산한다.
단계 230에서, 계산된 가우시안 차에 기초하여 소정의 기준에 따라 특징점을 선택한다.
단계 240에서, 원래의 이미지에서 모든 픽셀들의 그라디언트(Gradient)를 계산하여 그라이언트 맵을 생성한다.
단계 250에서, 그라디언트 맵을 이용하여 단계 230에서 선택된 특징점들의 디스크립터(Descriptor)를 계산한다.
단계 260에서, 최종적인 특징점 데이터를 생성한다. 특징점 데이터는 특징점의 좌표 및 해당 특징점의 디스크립터를 포함한다.
SIFT 알고리즘에 대한 보다 상세한 설명은 미국특허 6,711,293 등의 공개 문헌에 상세히 기술되어 있으므로 여기서는 생략한다.
전술한 바와 같이, SIFT 알고리즘은 우수한 특성을 가지지만, 실시간 응용에적용하기 어려운 문제가 있다. 이미지의 크기와 내용에 따라 하나의 이미지에서 특징점 데이터를 생성하는 작업은 수 초에서 수십 초가 소요되기 때문이다.
본 발명은 복수 개의 프로세서를 가지는 멀티 프로세서 시스템에서 SIFT 기반의 특징점 추출 알고리즘을 병렬화하여 디지털 이미지에서 특징점을 추출하는 데 소요되는 시간을 줄이는 방법을 제공하는데 그 목적이 있다.
이러한 목적을 달성하기 위한 본 발명은, 멀티 프로세서 시스템이 SIFT(Scale invariant Feature Transform) 방식에 따라 디지털 이미지에서 특징점을 추출하는 방법에 있어서, 복수 개의 프로세서들이 원래의 이미지를 복수 개의 영역들로 분담하여 단계적으로 블러링을 수행하는 단계; 상기 프로세서들이 상기 단계적으로 블러링된(blurred) 이미지들을 복수 개의 영역들로 분담하여 가우시안 차(Difference of Gaussian)를 계산하는 단계; 및 상기 계산된 가우시안 차에 기초하여 특징점 데이터를 생성하는 단계를 포함하는 것을 특징으로 한다.
상기 특징점 데이터를 생성하는 단계는, 상기 가우시안 차에 기초하여 특징점들을 선택하는 단계; 상기 프로세서들이 상기 원래의 이미지를 복수 개의 영역들로 분담하여 해당 영역의 픽셀들에 대한 그라디언트(Gradient) 값들을 계산하는 단계; 상기 프로세서들이 상기 선택된 특징점들을 분담하여 해당 특징점들에 대해 상기 그라디언트 값에 따른 디스크립터(Descriptor)를 계산하는 단계; 및 상기 선택된 특징점들의 좌표 및 상기 계산된 디스크립터를 이용하여 특징점 데이터를 생성하는 단계를 포함하는 것이 바람직하다.
상기 블러링을 수행하는 단계는, 상기 프로세서들이 상기 원래 이미지의 라인들을 분담하여 가로 방향으로 제1 컨볼루션(convolution) 연산을 수행하는 단계; 및 상기 제 1 컨볼루션 연산의 결과를 취합하여 90도 회전시킨 이미지의 라인들을 분담하여 가로 방향으로 제 2 컨볼루션 연산을 수행하는 단계를 포함하는 것이 바람직하다.
상기 블러링을 수행하는 단계는, 블러링을 수행할 원래 라인의 양 경계에 소정 개수의 가상 픽셀들을 부가하는 단계; 상기 가상 픽셀들이 부가된 라인에 블러커널(blur kernel)을 곱한 후 블러 커널의 오프셋만큼 쉬프트시킨 라인들 및 상기 가상 픽셀들이 부가된 라인을 이용하여 상기 원래 라인의 모든 픽셀들에 대한 컨볼루션 연산을 수행하는 단계; 및 상기 컨볼루션 연산 결과들 중 연산 과정에서 상기 가상 픽셀들 중 적어도 하나가 이용된 픽셀들에 대한 연산 결과를 보정하는 단계를 포함하는 것이 바람직하다.
또한, 본 발명은 상기 특징점 추출 방법을 실행하는 컴퓨터 프로그램을 기록한 기록 매체를 제공한다.
또한, 본 발명은 SIFT(Scale invariant Feature Transform) 방식에 따라 디지털 이미지에서 특징점을 추출하는 멀티 프로세서 장치에 있어서, 원래의 이미지를 복수 개의 영역들로 분담하여 단계적으로 블러링을 수행하고, 상기 단계적으로 블러링된(blurred) 이미지들을 복수 개의 영역들로 분담하여 가우시안 차(Difference of Gaussian)를 계산하는 복수의 프로세서들; 및 상기 계산된 가우시안 차에 기초하여 특징점 데이터를 생성하는 적어도 하나의 프로세서를 포함하는 것을 특징으로 한다
본 발명에 따르면, 이미지에서 특징점을 추출하기 위해 소요되는 시간을 줄일 수 있으므로, 이미지 프로세싱 작업의 효율을 향상시킬 수 있다.
이하에서 첨부된 도면을 참조하여, 본 발명의 바람직한 실시예를 상세히 설명한다.
도 3은 본 발명의 일실시예에 따라 멀티 프로세서 시스템에서 이미지의 특징점을 추출하는 과정을 나타낸 순서도이다.
단계 310에서, 입력 이미지는 복수 개의 영역으로 분할되어 복수 개의 프로세서들에게 할당된다. 복수 개의 프로세서들은 각자 자신에게 할당된 영역에 대해 블러링 작업을 병렬적으로 수행한다. 병렬적으로 수행된 작업 결과는 적어도 하나의 프로세서에 의해 취합되어 DoG 이미지가 생성된다.
단계 320에서, 블러링된(blurred) 이미지들, 즉 DoG 이미지들은 다시 복수 개의 영역으로 분할되어 프로세서들에게 할당되고, 프로세서들은 병렬적으로 각자 할당된 영역에 대해 DoG를 계산한다. 이 과정은 도 4a 및 도 4b를 참조하면 더욱 쉽게 이해될 것이다. 도 4a에서 이미지1, 이미지2는 동일한 스케일에서 레벨을 달리하여 블러링된 결과이며, 이 이미지들은 프로세서 수에 따라 적절하게 복수 개의 영역으로 분할된다. 도 4b에 도시된 바와 같이, 분할된 영역들은 복수 개의 프로세서들에게 할당되고, 복수 개의 프로세서들은 각자 자신에게 할당된 영역에 대해 DoG를 계산한다.
단계 330에서, 적어도 하나의 프로세서가 계산된 결과를 취합하여 소정의 기준에 따라 특징점이 선택된다. DoG가 소정의 문턱값(threshold)를 넘는 경우 특징점으로 선택되며, 이 때의 문턱값은 구현예에 따라 달라질 수 있을 것이다.
단계 340에서, 입력 이미지, 즉 원래의 이미지는 복수 개의 영역으로 분할되어 프로세서들에게 할당되고, 프로세서들은 병렬적으로 자신에게 할당된 영역의 모든 픽셀들에 대한 그라이언트(Gradient)를 계산한다. 적어도 하나의 프로세서는 복수 개의 프로세서들에 의해 병렬적으로 계산된 결과를 취합하여 그라디언트 맵을 생성한다.
단계 350에서, 단계 330에서 선택된 특징점들은 프로세서들에게 분배되고, 프로세서들은 병렬적으로 각자 자신에게 할당된 특징점들에 대해 그라디언트 맵을 이용하여 디스크립터를 계산한다. 특징점들은 라운드 로빈 방식에 의해 프로세서들에게 분배될 수 있다.
단계 360에서, 적어도 하나의 프로세서는 디스크립터 계산 결과를 취합하여 특징점 데이터를 생성한다.
도 5a는 본 발명의 일실시예에 따라 이미지를 블러링하는 과정을 나타낸 순서도이다.
단계 510에서, 프로세서들은 각자 자신에게 할당된 영역의 라인들에 대해 가로 방향으로 컨볼루션(convolution) 연산을 수행한다.
단계 520에서, 적어도 하나의 프로세서는 컨볼루션 연산 결과를 취합하여 생 성된 이미지를 90도 회전시킨다.
단계 530에서, 적어도 하나의 프로세서는 회전된 이미지를 분할하여 복수 개의 영역들을 프로세서들에게 할당한다.
단계 540에서, 프로세서들은 각자 자신에게 할당된 영역의 라인들에 대해 가로 방향으로 컨볼루션 연산을 수행한다.
단계 550에서, 적어도 하나의 프로세서는 단계 540에서의 컨볼루션 연산 결과를 취합하여 생성된 이미지를 -90도 회전시킨다.
이와 같이, 이미지를 회전시키는 이유는 원래 이미지의 세로 방향의 라인들이 메모리의 연속된 공간에 위치하도록 하여 프로세서들이 컨볼루션을 수행할 라인의 픽셀 데이터를 읽어오는 시간을 줄일 수 있다. 이러한 이점은 특히 프로세서들이 DMA(Direct Memory Access) 버스를 통해서만 메인 메모리에 액세스할 수 있는 경우에 더욱 두드러진다.
도 5b는 도 5a의 과정들에 대한 이해를 돕기 위한 도면이다. 도 5b에 도시된바와 같이, 복수 개의 프로세서들은 입력 이미지에 대해 병렬적으로 가로 방향의 컨볼루션 연산을 수행하고, 모든 라인들에 대해 컨볼루션 연산이 완료되면 이미지를 회전하여 다시 가로 방향으로 컨볼루션 연산을 수행한다.
도 6a는 본 발명의 일실시예에 따라 프로세서들이 하나의 라인에 대해 컨볼루션 연산을 수행하는 과정을 나타낸 순서도이다.
단계 610에서, 블러링을 수행할 라인의 양쪽 경계에 가상 픽셀을 부가한다.
단계 620에서, 가상 픽셀이 부가된 라인에 블러 커널(blur kernel)을 곱한 후, 곱해진 블러 커널의 오프셋만큼 쉬프트시킨 라인들을 이용하여 원래 라인의 픽셀들에 대한 컨볼루션 연산을 수행한다. 이렇게 하는 이유는 명령 파이프라인(instruction pipeline)에서 분기(branch)의 발생 빈도를 줄여 효율성을 높이기 위한 것이다. 이에 대한 보다 상세한 설명은 도 6b를 참조하여 후술한다.
단계 630에서, 단계 620의 컨볼루션 연산 과정에서 가상 픽셀의 값이 사용된 연산의 경우 그 결과값을 보정한다. 가상 픽셀은 원래의 이미지에 없는 픽셀이므로, 이러한 픽셀에 의해 발생한 오차를 보정하는 것이다. 이에 대한 보다 상세한 설명은 도 7a 내지 도 7d를 참조하여 후술한다.
도 6b는 본 발명의 일실시예에 따라 프로세서들이 하나의 라인에 대해 컨볼루션 연산을 수행하는 방법을 설명하기 위한 도면이다.
도 6b에 도시된 바와 같이, 블러 마스크의 크기는 5이고, 블러 커널은 0.1, 0.2, 0.4, 0.2, 0.1 이며, 블러링을 수행할 라인의 픽셀들은 0.7, 0.8, 0.5, 0.6, 0.8, 0.9이다. 기존의 방법에 의하면, 이 픽셀들 중 픽셀값이 0.5인 픽셀에 대해 컨볼루션 연산을 하는 경우, 주변의 4개 픽셀들, 즉 0.7, 0.8, 0.6, 0.8 픽셀들을 포함한 5개의 픽셀들을 이용하여 컨볼루션 연산을 수행하고, 다음 픽셀에 대하여는 다시 5개의 픽셀들을 선택하여 컨볼루션 연산을 수행한다. 그러나, 이러한 방식으로 하나의 라인의 모든 픽셀들에 대하여 컨볼루션 연산을 수행하면 명령 파이프 라인 체계에서 분기가 많이 생기므로 도 6b에 도시된 바와 같이 컨볼루션을 수행한다.
우선, 블러링을 수행할 라인의 양 경계에 가상 픽셀들을 부가한다. 본 실시 예에서는 블러 마스크의 크기가 5이므로 양쪽 경계에 각각 2개의 가상 픽셀들을 부가하였다.
다음으로, 블러 커널을 라인의 모든 픽셀에 곱하고 곱해진 블러 커널의 오프셋 만큼 라인을 쉬프트시킨다. 블러 마스크의 크기가 5이므로 도 6b에 도시된 바와 같이 5개의 라인이 얻어진다. 이 라인들의 같은 열(column)에 있는 픽셀들을 이용하여 컨볼루션 연산을 수행할 수 있다. 예를 들면, 픽셀값이 0.5인 픽셀의 컨볼루션 연산 결과는 (0.8 X 0.1) + (0.6 X 0.2) + (0.5 X 0.4) + (0.8 X 0.2) + (0.7 X 0.1) = 0.63이 된다.
도 7a 내지 도 7d는 본 발명의 일실시예에 따라 컨볼루션 연산 결과의 오차를 보정하는 방법을 설명하기 위한 도면이다.
일반적으로, 하나의 라인에 대한 컨볼루션 작업에서 양쪽 경계 부분을 구성하는 픽셀들은 블러 마스크에 들어맞지 않으므로, 라인의 중간 부분을 구성하는 픽셀들과 다르게 처리되어야 한다. 따라서, 프로세서는 컨볼루션 연산을 수행하기 전에 픽셀이 경계 부분인지를 체크해야 하는데, 이러한 과정은 조건문에 의해 구현되므로, 명령 파이프 라인에서 분기를 발생시키는 요인이 된다. 도 7a 내지 도 7d에서는 이러한 분기를 없애기 위한 방법을 설명한다.
도 7a 내지 도 7b는 도 6b에서와 동일한 실시예를 도시하고 있으며, 중복되는 설명은 생략한다. 다만, 가상 픽셀의 픽셀값은 0으로 설정하였다. 도 7b를 살펴보면, 원래 라인에서 0.7 픽셀에 대한 컨볼루션 연산 결과는 0.49가 얻어졌고, 0.8 픽셀에 대한 컨볼루션 연산 결과는 0.62가 얻어졌다. 그러나, 이러한 경계 픽셀들 에 대한 컨볼루션 연산 결과는 가상 픽셀을 이용하여 얻은 것이므로, 정확하지 않다. 예를 들면, 왼쪽에서 두번째 픽셀, 즉 0.8 픽셀에 대한 컨볼루션 연산 결과는 0.62인데, 컨볼루션 연산을 위해 사용된 5개의 픽셀들 중 하나가 가상 픽셀이므로, 이 가상 픽셀에 의해 발생한 오차를 보정해야 한다.
도 7c에는 이러한 오차를 보정하기 위한 가중치를 도시한 것이다. 도 7d은 경계 부분의 픽셀들에 대한 컨볼루션 연산 결과를 가중치를 이용하여 보정하는 방법을 설명하기 위한 도면이다. 예를 들어, 0.7 픽셀에 대한 컨볼루션 연산 과정에서는 두 개의 가상 픽셀들이 사용되었는데, 이러한 가상 픽셀들에 대한 블러 커널은 0.3(0.2+0.1)이었다. 따라서, 이러한 가상 픽셀들을 반영한 값인 0.49를 0.7(1-0.3)으로 나누면 가상 픽셀들에 의해 발생한 오차를 보정한 값 0.7을 얻을 수 있다.
도 8은 본 발명의 일실시예에 따른 멀티 프로세서 시스템의 구성을 도시한 것이다.
도 8에 도시한 바와 같이, 본 발명에 따른 멀티 프로세서 시스템(800)은 복수 개의 프로세서들(801, 802, 803, 804) 및 메인 메모리(805)를 구비한다. 멀티 프로세서 시스템(800)은 도 8에 도시된 블록들 외에도 다양한 기능 블록들이 포함될 수 있을 것이다. 도 8에는 4개의 프로세서들이 도시되었으나, 프로세서들의 개수는 다양하게 변화될 수 있다.
전술한 바와 같이, 입력 이미지는 메인 메모리(805)에 저장되고, 복수의 프로세서들은 SIFT 방식에 따라 디지털 이미지에서 특징점을 추출하는 작업을 분할하 여 병렬적으로 수행한다. 즉, 복수의 프로세서들은 블러링, 가우시안 차의 계산, 그라디언트 계산 및 디스크립터 계산을 병렬적으로 수행한다.
적어도 하나의 프로세서는 이미지를 분할하여 다른 프로세서들에게 할당하여작업들이 병렬적으로 수행될 수 있도록 한다. 이러한 역할을 하는 프로세서는 메인 메모리(805)에 저장된 이미지 중 분할된 특정 영역에 대한 주소를 다른 프로세서들에게 전달함으로써 작업이 분담되도록 한다. 또한, 프로세서들로부터 블러링, 가우시안 차의 계산, 그라디언트 계산 및 디스크립터 계산 등의 결과를 취합하고 최종적으로 특징점 데이터를 생성하는 역할을 수행한다.
도 9a 내지 도 9b는 본 발명의 일실시예에 따라 멀티 프로세서 시스템의 성능을 테스트한 결과를 도시한 것이다.
도 9a는 본 실험에서 사용된 멀티 프로세서 시스템인 셀 브로드밴드 엔진(CBE, Cell Broadband Engine)의 구조를 도시한 것이다. CBE는 STI(Sony, Toshiba, IBM) 컨소시엄에서 개발한 것으로, 도 9a에 도시된 바와 같이 총 아홉 개의 프로세서, 즉 한 개의 PPE(Power Processor Element) 및 여덟 개의 SPE(Synergistic Processing Element)를 구비하고 있다. PPE는 작업을 전체적으로 제어하고 데이터를 SPE에게 분배하며, SPE들은 할당된 작업을 병렬적으로 수행한다. 즉, PPE는 이미지를 분할하여 SPE들에게 할당하고, SPE들로부터 블러링, 가우시안 차의 계산 등에 대한 결과 데이터를 수신하여 취합한다. SPE는 SIMD(Single Instruction, Multiple Data) 방식을 이용하여 데이터를 처리한다. 또한, PPE와 SPE 간의 데이터 전송 시간을 줄이기 위해 더블 버퍼링(double buffering) 기술이 이용될 수 있다.
도 9b에는 테스트 결과를 테이블로 나타내었다. 도 9b에 도시된 바와 같이, 각 단계별 작업들을 수행하는 데 소요된 시간은 PPE 단독으로 수행하는 경우에 비하여 SPE들이 분담하여 수행하는 경우에 월등히 줄어들었다.
구체적으로는, 시간을 기준으로 평가하였을 때, 이미지 블러링 작업은 406%, 가우시안 차를계산하는 작업은 446%, 그라디언트를 계산하는 작업은 245%, 디스크립터를 계산하는 작업은 294% 만큼 CBE의 성능이 향상되었음을 알 수 있다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으 로 해석되어야 할 것이다.
도 1은 이미지의 특징점을 이용하여 파노라마 이미지를 생성하는 과정을 나타낸 순서도,
도 2는 SIFT 알고리즘을 이용하여 특징점을 추출하는 과정을 나타낸 순서도,
도 3은 본 발명의 일실시예에 따라 멀티 프로세서 시스템에서 이미지의 특징점을 추출하는 과정을 나타낸 순서도,
도 4a 내지 도 4b는 프로세서들이 이미지의 각 영역을 분담하여 가우시안 차를 계산하는 방법을 설명하기 위한 도면,
도 5a 내지 도 5b는 본 발명의 일실시예에 따라 이미지를 블러링하는 방법을 설명하기 위한 도면,
도 6a 내지 도 6b는 본 발명의 일실시예에 따라 프로세서들이 하나의 라인에 대해 컨볼루션 연산을 수행하는 방법을 설명하기 위한 도면,
도 7a 내지 도 7d는 본 발명의 일실시예에 따라 컨볼루션 연산 결과의 오차를 보정하는 방법을 설명하기 위한 도면,
도 8은 본 발명의 일실시예에 따른 멀티 프로세서 시스템의 구조를 나타낸 도면,
도 9a 내지 도 9b는 본 발명의 일실시예에 따라 멀티 프로세서 시스템의 성능을 테스트한 결과를 나타낸 도면이다.

Claims (11)

  1. 멀티 프로세서 시스템이 SIFT(Scale invariant Feature Transform) 방식에 따라 디지털 이미지에서 특징점을 추출하는 방법에 있어서,
    복수 개의 프로세서들이 원래의 이미지를 복수 개의 영역들로 분담하여 단계적으로 블러링을 수행하는 단계;
    상기 프로세서들이 상기 단계적으로 블러링된(blurred) 이미지들을 복수 개의 영역들로 분담하여 가우시안 차(Difference of Gaussian)를 계산하는 단계; 및
    상기 계산된 가우시안 차에 기초하여 특징점 데이터를 생성하는 단계를 포함하고,
    상기 블러링을 수행하는 단계는,
    블러링을 수행할 원래 라인의 양 경계에 소정 개수의 가상 픽셀들을 부가하는 단계;
    상기 가상 픽셀들이 부가된 라인에 블러커널(blur kernel)을 곱한 후 블러 커널의 오프셋만큼 쉬프트시킨 라인들 및 상기 가상 픽셀들이 부가된 라인을 이용하여 상기 원래 라인의 모든 픽셀들에 대한 컨볼루션 연산을 수행하는 단계; 및
    상기 컨볼루션 연산 결과들 중 연산 과정에서 상기 가상 픽셀들 중 적어도 하나가 이용된 픽셀들에 대한 연산 결과를 보정하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1항에 있어서,
    상기 특징점 데이터를 생성하는 단계는,
    상기 가우시안 차에 기초하여 특징점들을 선택하는 단계;
    상기 프로세서들이 상기 원래의 이미지를 복수 개의 영역들로 분담하여 해당 영역의 픽셀들에 대한 그라디언트(Gradient) 값들을 계산하는 단계;
    상기 프로세서들이 상기 선택된 특징점들을 분담하여 해당 특징점들에 대해 상기 그라디언트 값에 따른 디스크립터(Descriptor)를 계산하는 단계; 및
    상기 선택된 특징점들의 좌표 및 상기 계산된 디스크립터를 이용하여 특징점 데이터를 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제 2항에 있어서,
    상기 디스크립터를 계산하는 단계는,
    상기 선택된 특징점들을 라운드 로빈(Round Robin) 방식에 따라 상기 프로세스들이 분담하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제 1항에 있어서,
    상기 블러링을 수행하는 단계는,
    상기 프로세서들이 상기 원래 이미지의 라인들을 분담하여 가로 방향으로 제1 컨볼루션(convolution) 연산을 수행하는 단계; 및
    상기 제 1 컨볼루션 연산의 결과를 취합하여 90도 회전시킨 이미지의 라인들을 분담하여 가로 방향으로 제 2 컨볼루션 연산을 수행하는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 삭제
  6. 제 1항 내지 제 4항 중 어느 한 항에 의한 방법을 실행하는 컴퓨터 프로그램을 기록한 기록 매체.
  7. SIFT(Scale invariant Feature Transform) 방식에 따라 디지털 이미지에서 특징점을 추출하는 멀티 프로세서 장치에 있어서,
    원래의 이미지를 복수 개의 영역들로 분담하여 단계적으로 블러링을 수행하고, 상기 단계적으로 블러링된(blurred) 이미지들을 복수 개의 영역들로 분담하여 가우시안 차(Difference of Gaussian)를 계산하는 복수의 프로세서들; 및
    상기 계산된 가우시안 차에 기초하여 특징점 데이터를 생성하는 적어도 하나의 프로세서를 포함하고,
    상기 복수의 프로세서들은 블러링을 수행할 원래 라인의 양 경계에 소정 개수의 가상 픽셀들을 부가하고, 상기 가상 픽셀들이 부가된 라인에 블러 커널(blur kernel)을 곱한 후 블러 커널의 오프셋만큼 쉬프트시킨 라인들 및 상기 가상 픽셀들이 부가된 라인을 이용하여 상기 원래 라인의 모든 픽셀들에 대한 컨볼루션 연산을 수행하고,
    상기 적어도 하나의 프로세서는 상기 컨볼루션 연산 결과들 중 연산 과정에서 상기 가상 픽셀들 중 적어도 하나가 이용된 픽셀들에 대한 연산 결과를 보정하는 것을 특징으로 하는 장치.
  8. 제 7항에 있어서,
    상기 복수의 프로세서들은 상기 원래의 이미지를 복수 개의 영역들로 분담하여 해당 영역의 픽셀들에 대한 그라디언트(Gradient) 값들을 계산하고, 상기 적어도 하나의 프로세서에 의해 선택된 특징점들을 분담하여 해당 특징점들에 대해 상 기 그라디언트 값에 따른 디스크립터(Descriptor)를 계산하며,
    상기 적어도 하나의 프로세서는 상기 계산된 가우시안 차에 기초하여 특징점들을 선택하고, 상기 선택된 특징점들의 좌표 및 상기 계산된 디스크립터를 이용하여 특징점 데이터를 생성하는 것을 특징으로 하는 장치.
  9. 제 8항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 선택된 특징점들을 라운드 로빈(Round Robin) 방식에 따라 상기 프로세스들에게 할당하는 것을 특징으로 하는 장치
  10. 제 7항에 있어서,
    상기 복수의 프로세서들은 상기 원래 이미지의 라인들을 분담하여 가로 방향으로 제1 컨볼루션(convolution) 연산을 수행하고, 상기 제 1 컨볼루션 연산의 결과를 취합하여 90도 회전시킨 이미지의 라인들을 분담하여 가로 방향으로 제 2 컨볼루션 연산을 수행하는 것을 특징으로 하는 장치.
  11. 삭제
KR1020070109677A 2007-08-23 2007-10-30 디지털 이미지에서 특징점을 추출하는 방법 및 장치 KR101270173B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/196,720 US8306366B2 (en) 2007-08-23 2008-08-22 Method and apparatus for extracting feature points from digital image

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US95753407P 2007-08-23 2007-08-23
US60/957,534 2007-08-23

Publications (2)

Publication Number Publication Date
KR20090020452A KR20090020452A (ko) 2009-02-26
KR101270173B1 true KR101270173B1 (ko) 2013-05-31

Family

ID=40687918

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070109677A KR101270173B1 (ko) 2007-08-23 2007-10-30 디지털 이미지에서 특징점을 추출하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101270173B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104318238A (zh) * 2014-11-10 2015-01-28 广州御银科技股份有限公司 一种验钞模块中对扫描的钞票图提取冠字号的方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101127793B1 (ko) * 2011-01-04 2012-03-23 위드로봇 주식회사 이미지 인식 시스템 및 그 제공방법
GB2487375B (en) * 2011-01-18 2017-09-20 Aptina Imaging Corp Interest point detection
KR101904203B1 (ko) 2012-06-20 2018-10-05 삼성전자주식회사 시프트 알고리즘을 이용하여 대용량 소스 이미지의 특징점 정보를 추출하는 장치 및 방법
CN111881923A (zh) * 2020-07-28 2020-11-03 民生科技有限责任公司 一种基于特征匹配的票据要素提取方法
CN114092559A (zh) * 2021-11-30 2022-02-25 中德(珠海)人工智能研究院有限公司 一种全景图像特征点描述符生成网络的训练方法以及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DAVID G. LOWE, ‘Distinctive Image Features from Scale-Invariant Keypoints’, International Journal of Computer Vision 60(2), pp.91-110 (2004)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104318238A (zh) * 2014-11-10 2015-01-28 广州御银科技股份有限公司 一种验钞模块中对扫描的钞票图提取冠字号的方法

Also Published As

Publication number Publication date
KR20090020452A (ko) 2009-02-26

Similar Documents

Publication Publication Date Title
US8306366B2 (en) Method and apparatus for extracting feature points from digital image
KR101270173B1 (ko) 디지털 이미지에서 특징점을 추출하는 방법 및 장치
Lu et al. Patch match filter: Efficient edge-aware filtering meets randomized search for fast correspondence field estimation
US20170358053A1 (en) Parallel processor with integrated correlation and convolution engine
Ttofis et al. A low-cost real-time embedded stereo vision system for accurate disparity estimation based on guided image filtering
US10186067B2 (en) Method and apparatus for generating panoramic image with rotation, translation and warping process
US20200294194A1 (en) View synthesis using neural networks
CN105405103A (zh) 通过在空间上和/或在时间上改变采样模式增强抗锯齿
CN101540046A (zh) 基于图像特征的全景图拼接方法和装置
US20150170405A1 (en) High resolution free-view interpolation of planar structure
US20090262180A1 (en) Apparatus for generating panoramic images and method thereof
CN106488215B (zh) 图像处理方法和设备
CN103379291A (zh) 图像处理装置、图像处理方法和程序
CN109885407B (zh) 数据处理方法和装置、电子设备、存储介质
CN106056560B (zh) 单应性校正
US7675524B1 (en) Image processing using enclosed block convolution
Hu et al. Perspective flow aggregation for data-limited 6d object pose estimation
US20160335082A1 (en) Multi-dimensional sliding window operation for a vector processor
US11568323B2 (en) Electronic device and control method thereof
JP5552956B2 (ja) 画像処理装置、画像処理方法およびプログラム
McCullagh Real-time disparity map computation using the cell broadband engine
US9230305B2 (en) Summed area computation using ripmap of partial sums
US11232323B2 (en) Method of merging images and data processing device
JP2005000666A (ja) デジタルx線撮影において非機能画素をリアルタイムで修正する方法
CN114219706A (zh) 基于网格分区特征点约减的图像快速拼接方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160421

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180423

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190418

Year of fee payment: 7