KR101702996B1 - 영상 처리를 위한 정렬 격자 및 그래프 운행 - Google Patents
영상 처리를 위한 정렬 격자 및 그래프 운행 Download PDFInfo
- Publication number
- KR101702996B1 KR101702996B1 KR1020100056772A KR20100056772A KR101702996B1 KR 101702996 B1 KR101702996 B1 KR 101702996B1 KR 1020100056772 A KR1020100056772 A KR 1020100056772A KR 20100056772 A KR20100056772 A KR 20100056772A KR 101702996 B1 KR101702996 B1 KR 101702996B1
- Authority
- KR
- South Korea
- Prior art keywords
- node
- nodes
- information
- image
- determining
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Image Processing (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
Abstract
다수의 노드들에 의해 표현되는 영상은, 영상의 또 다른 노드(예를 들어, 소스 노드)에서 하나의 노드로 정보가 전파될 수 있는지 여부를 결정함으로써 처리될 수 있으므로, 오늘날 널리 이용되고 광범위하게 이용가능한 멀티프로세싱 또는 멀티-코어 프로세서들의 이점을 이용하여 상당히 더 큰 병렬화 및 확장성을 허용한다. 개념적으로, 영상은 다수의 노드들의 "정렬 격자"(예를 들어, 영상의 픽셀들의 정렬 격자)로서 표현될 수 있다. "정렬 격자"에서, 2 이상의 노드들은 병렬적으로 정보를 전파할지 여부를 결정할 수 있다. 사실, "정렬 격자"의 각 노드는 병렬적으로 정보를 전파하는 것과 관련하는 동작들을 수행할 수 있다. 이는 N개의 픽셀들로 이루어지는 영상에 대하여, N개의 동작들을 병렬적으로 수행할 수 있음을 의미한다. 또한, 소정의 시간에 이용가능한 개수의 프로세서들 또는 프로세싱 코어들 사이에 N개의 픽셀들에 대한 N개의 동작들을 실질적으로 동일하게 나눌 수도 있다.
Description
본 발명은 컴퓨팅 환경 및 컴퓨팅 시스템에 대한 영상 처리에 관한 것이다.
개념적으로, 컴퓨팅 시스템(예를 들어, 컴퓨팅 디바이스, 개인용 컴퓨터, 랩탑, 스마트 폰, 이동 전화)은 정보(콘텐트 또는 데이터)를 수용하고 처리하여, 정보를 처리하는 방법을 효과적으로 기술하는 일련의 명령어(또는 컴퓨터 프로그램)에 기초하여 결과를 획득하거나 결정한다. 통상적으로, 정보는 바이너리 형태로 컴퓨터로 판독가능한 매체에 저장된다. 더 복잡한 컴퓨팅 시스템은 컴퓨터 프로그램 자체를 포함한 콘텐트를 저장할 수 있다. 컴퓨터 프로그램은 예를 들어, 마이크로프로세서 또는 컴퓨터 칩상에 제공되는 논리적 회로와 같은, 컴퓨터(또는 컴퓨팅) 디바이스로 설치되거나 불변하게 될 수 있다. 오늘날, 범용 컴퓨터는 두 종류의 프로그래밍을 가질 수 있다. 이들 컴퓨팅 디바이스는 크기, 비용, 저쟝 용량 및 프로세싱 능력면에서 넓은 범위에 있다. 오늘날 이용가능한 컴퓨팅 디바이스들은, 고가의 강력한 서버, 상대적으로 저렴한 개인용 컴퓨터 및 랩탑과, 저장 장치에 제공되는 덜 비싼 마이크로프로세서(또는 컴퓨터 칩), 자동차 및 가전 기기를 포함한다. 메모리 및 저장 장치는 오랫동안 컴퓨팅 및 컴퓨팅 디바이스의 중요한 부분이었다. 메모리 및 저장 장치 기술은 최근 들어 현저하게 개선되어 왔다. 오늘날 상대적으로 큰 용량의 콘텐트가 USB 플래시 드라이버들(또는 USB 플래시 디바이스들)과 같은 디바이스들에 액세스하기 쉽고 휴대가능한 디바이스들에 저장될 수 있다. USB 플래시 드라이버들에 저장되는 콘텐트는 쉽게 이동될 수 있고 다양한 컴퓨팅 디바이스들로 복사될 수 있다. 예를 들어, 서버 컴퓨터에 저장된 데이터는 USB 플래시 드라이버로 복사되고, 집으로 가져가서 개인용 컴퓨터로 로딩(또는 복사)될 수 있다.
그 중에서도, 컴퓨팅 시스템은 영상 처리에 이용될 수 있다. 일반적으로, 영상 처리는 입력이 영상(예를 들어, 사진, 비디오 프레임)인 신호 처리의 어떤 형태도 될 수 있다. 영상 처리의 출력 또한, 영상일 수 있으며, 또는 영상과 관련된 특징들 또는 파라미터들일 수 있다. 영상 처리 기술은 입력 영상을 2차원 신호로서 처리하고, 2차원 신호에 표준 신호 처리 기술을 적용하는 것을 포함할 수 있다. 영상 처리 기술은 3-D 영상을 처리하는데에도 이용될 수 있다. 영상을 처리하기 위하여, 영상은 "운행(traversed)"될 수 있는 그래프로서 표현될 수 있다. 그래프 운행(graph traversal) 동안, 정보는 그래프의 노드들 사이에서 전파될 수 있다.
영상 처리는 종종 디지털 영상을 처리하기 위한 컴퓨터(또는 컴퓨터 기반) 알고리즘을 이용하는 것을 이유로 디지털 영상 처리라고 한다. 디지털 영상 처리는 디지털 신호 처리의 하위 분야로서 아날로그 영상 처리에 비해 많은 이점이 있다. 디지털 영상 처리는 아날로그 영상 처리에 비해 입력에 적용될 수 있는 알고리즘이 더 넓을 뿐만 아니라, 아날로그 영상 처리와 관련된 다양한 문제들(예를 들어, 노이즈 누적(building up), 처리 동안 신호 왜곡)을 피할 수 있기 때문이다.
디지털 영상 처리는 과학 커뮤니티에 의해 널리 인식되고, 디지털 카메라, 디지털 편집 등에 익숙한 일반 대중들에 의해 이용된다. 예를 들어, 디지털 영상 처리 기술은 다양한 형태에서 그리고 매우 다양한 애플리케이션에서 이용됨으로써 증거가 되는 바와 같이 매우 유용하다. 디지털 이미징은 컴퓨팅 시스템(또는 컴퓨터)를 이용하여 실현되거나 달성될 수 있다. 예를 들어, 컴퓨터는 데이터베이스에 저장된 다양한 디지털 영상들에서 객체를 인식하기 위하여 실행가능한 컴퓨터 프로그램을 실행(또는 구동)할 수 있다.
디지털 영상 처리에서, 영상(I)는 그래프 "G = (V, E)"로 표현될 수 있다. 여기에서, "V"는 노드들의 세트를 나타내고, "E"는 그래프의 에지들을 나타낸다. 그래프 "G = (V, E)"에서, 각 정점(vertex) v는 예를 들어, 영상(I)의 픽셀을 나타내거나, 영상(I)내의 픽셀들의 세트(set)일 수 있는 노드들(V)의 서브세트(subset)이다(v ∈ V). 에지들(E)은 픽셀들 사이의 관계 또는 픽셀 그룹들 사이의 관계를 나타낼 수 있다. 예를 들어, 영상(I)은 다음의 동작을 수행함으로써 표현될 수 있다: (i) 영상(I)의 각 픽셀에 대하여, 픽셀을 나타내는 정점을 이용함, (ⅱ) 각 픽셀 정점에 대하여, 각 정점을 에지들로 그 북쪽, 남쪽, 동쪽 및 서쪽의 이웃 픽셀 정점들과 연결함. 그 결과는, 픽셀들의 이웃 관계로 영상(I)을 나타내는 연결된 그래프이다. 유사하게, 3D 영상은 3D 화소(volex) 또는 3D 화소 그룹들 사이의 관계를 나타내는 에지들(E)의 세트로 3D 화소 또는 3D 화소 그룹들을 나타내는 v ∈ V인 그래프로 표현될 수 있다. 그래프 "G = (V, E)" 및 노드들(V)의 서브 세트로서 소스 정점들(S)의 세트가 주어지면(S⊆V), "그래프 운행"은 종료 기준이 만족될 때까지(예를 들어, V내의 모든 정점들이 방문될 때까지), 소스 정점들(S)로부터 그래프의 에지들(E)을 따르는 다른 정점들로 "워킹(walking)"한다고 말할 수 있다.
BFS(Breadth First Search) 그래프 운행 알고리즘은 다음과 같이 정의될 수 있다. 그래프 "G = (V, E)"에서 2개의 정점을 u 및 v라고 할 때, u 및 v가 이웃이라는 것은 정점 u 및 정점 v를 연결하는 에지가 존재함을 의미한다. 정점 u에 대하여, "N(u)"를 u의 이웃하는 노드들의 세트라고 하자. 정점들의 세트 U에 대하여, ""라고 하자. 그래프 "G = (V, E)" 및 소스 정점들의 세트 S ⊆ V가 주어진 경우, BFS 그래프 운행 알고리즘은, 제1 반복주기(iteration) 동안에는, "N(S)"에 있는 모든 정점들이 방문되고, 제2 반복주기 동안에는 "N(N(S))"가 방문되고, 제3 반복주기 동안에는, "N(N(N(S)))"가 방문되는 등으로 그래프를 반복적으로 운행하여 수행될 수 있다.
디지털 영상 처리는 많은 계산을 요구한다. 예를 들어, 디지털 영상 처리는 강도높은 계산이 필요한 프로세스일 수 있다. 일반적으로 그래프 운행을 요구하는 객체 인식은 매우 강도 높은 계산이 필요할 수 있는 디지털 영상 처리의 일 예이다. 영상 분석을 위한 중요한 기술로서, 객체 인식은 무엇보다도 디지털 영상내의 객체들을 분류하는데 이용될 수 있다. 디지털 영상들은 예를 들어, 데이터베이스에 저장될 수 있다. 그러나, 당해 기술분야에 일반적으로 알려져 있는 바와 같이, 더 정확한 객체 인식 기법은 상대적으로 더욱 계산 강도가 높다.
오늘날 디지털 이미징이 수많은 애플리케이션에 널리 이용되는 상황에서, 대안적인 영상 처리 기법이 유용할 것이다.
영상 처리를 위한 "정렬 격자(structured grid)"가 제공된다.
본 발명은 컴퓨팅 환경 및 컴퓨팅 시스템에 대한 영상 처리에 관한 것이고, 더욱 상세하게는, 본 발명은 영상 처리를 위한 "정렬 격자(structured grid)"에 관한 것이다.
"정렬 격자"는 규칙적인 다차원 격자(일반적으로 2D 또는 3D)에서 데이터를 배열하는 메커니즘으로써 제공됨으로써 계산은 이웃 격자들로부터 획득된 정보에 따라 영상을 나타내도록 구조화된 많은 격자들을 갱신함으로써 처리될 수 있다. 일반적으로, 각 격자는 동기적으로 또는 비동기적으로 갱신될 수 있다. 격자들이 동기적으로 갱신되면, 계산은 예를 들어, 모든 격자들을 반복적으로 갱신할 수 있다. 격자들이 비동기적으로 갱신되면, 각 격자는 예를 들어 각 격자의 이웃 중 어느 것이 갱신되면 자신을 갱신할 수 있다.
광범위한 다양한 방법들이 정렬 격자 계산을 병렬적으로, 예를 들어, 멀티코어 컴퓨팅 시스템상에서 매핑(map)되도록 할 수 있다. 예를 들어, 격자들은 열로, 행으로 또는 규칙적인 청크들로 분할될 수 있다. 다른 가능성은 "멀티-격자 개선(multi-grid refinement)"을 이용하는 것이다. 멀티 격자 모델링을 위하여, 데이터를 고정 크기의 청크들로 분할하는 대신에, 격자들에 대한 여러 복사본들이 다양한 청크 단위(granulity)로 이루어질 수 있다. 큰 단위 청크(coase-grained chunks)는 더 먼 거리의 갱신을 하는데 이용될 수 있는 반면에 작은 단위 청크(fine-grained chunks)는 더 상세한 전파를 만들 수 있다.
통상적으로, 영상은 "규칙적" 데이터 배열을 가지고, 따라서 영상의 그래프 표현도 정렬 격자 계산에 적합한 규칙적 데이터 배열을 가진다. 예를 들어, 정렬 격자 계산은 무엇보다도 그래프 운행에 이용될 수 있다. 영상을 규칙적 그래프로 표현하면, 그래프의 각 정점은 격자로 모델링될 수 있고, 또는 정점들의 규칙적 청크는 격자로 모델링될 수 있다. 소스 정점들로부터 이웃 노드들로의 운행 행동은 격자 정보를 갱신함으로써 시뮬레이션될 수 있다. 그러나, 계산순서는 바뀔 수 있다. 즉, 종래의 그래프 운행에서, 각 소스 정점은 그 이웃 정점들로 직접 운행한다. 극명히 대조적으로, 정렬 격자 계산에서, 각 격자는 이웃 소스 격자에 의해 갱신될 수 있는지 확인할 수 있다. 격자들이 동기적으로 갱신되면, BFS 그래프 운행 알고리즘의 행동은 정렬 격자 계산을 이용하여 시뮬레이션될 수 있다.
개시된 영상 처리 기술들은 무엇보다도 종래의 기술들을 이용해서 달성될 수 있는 것보다 매우 큰 병렬성 및 확장성(scalability)을 달성할 수 있음이 인식될 것이다. 특히, 영상의 노드들 사이의 정보의 전파를 요구하는 영상 처리 기법들(예를 들어, 그래프 운행)은 개시된 영상 처리 기법에서 상당히 유용할 수 있다. 당해 기술분야에 일반적으로 알려진 바와 같이, 그래프 운행에서, 영상은 다수의 노드들(예를 들어, 그래프에서의 노드들)로 표현될 수 있다. 영상은 다수의 단계들로 또는 반복주기들(iterations)로 처리될 수 있다. 영상 처리의 첫 단계 동안에, 하나의 노드(예를 들어, 소스 노드)로부터 정보는 통상적으로 하나 이상의 다른 노드들(이하에서는, 하나 이상의 "이웃 노드들"이라 함)로 전파될 수 있다. 후속 단계에서, 정보는 이웃 노드들에서 그 이웃 노드들로 전파될 수 있다. 단지 명확성을 위해서, 제1 노드로 전파될 수 있는 정보를 가진(또는 정보를 포함하는) 어떤 노드는 제1 노드의 "이웃 노드"라고 한다. 그러나, "이웃 노드"가 꼭 인접한 노드 또는 물리적으로 이웃하거나 지역적으로 인접한 노드일 필요는 없다. 영상 처리 알고리즘에 따라 다른 노드로 실질적으로 전파될 수 있는 정보를 포함하는 어떤 노드도 "이웃 노드"로 간주될 수 있다.
본 발명의 일 측면에 따르면, 다수의 노드들로 표현되는 영상은 정보가 영상의 또다른 노드(소스 노드)로부터 하나의 노드로 전파될 수 있는지 여부를 결정함으로써 처리될 수 있다. 즉, 영상의 노드는 소스 노드 대신에 하나 이상의 다른 노드들(예를 들어, 이웃 노드들)로부터 그 노드로 정보가 전파될 수 있는지를 결정하고, 그 노드가 그 이웃 노드들로 정보를 전파할 수 있는지 여부를 결정할 수 있다. 이 방법은 상당히 더 큰 병렬성 및 확장성을 허용함이 인식될 것이다. 결과적으로, 통상적으로 강도 높은 컴퓨팅 처리인 영상 처리는, 특히 오늘날 널리 퍼져있으며 넓은 범위에서 이용가능한 멀티프로세싱 또는 멀티 코어 프로세스를 이용함으로써 더 빠르고 더욱 효과적으로 수행될 수 있다.
개념적으로, 영상은 본 발명의 다른 측면에 따라 다수의 노드들의 "정렬 격자"로서 표현될 수 있다. "정렬 격자"에서, 2 이상의 노드들이 정보(또는 데이터)의 전파와 관련하는 동작들을 병렬적으로(또는 실질적으로 또는 실질적으로 동시에) 수행할 수 있다. 사실, "정렬 격자"의 각 노드는 이 동작들을 병렬적으로 수행할 수 있다. 예를 들어, 영상 처리의 소정의 단계에서, 각 노드는 그 이웃 노드(들)로부터 정보를 전파함으로써, 그 자체(또는 그 정보)를 갱신할 지 여부를 결정하고, 그에 따라 그 자체(또는 그 정보)를 하나 이상의 그 이웃 노드들로부터 정보를 전파함으로써 갱신할 수 있다. 이는 N개의 픽셀들로 이루어진 영상에 대해, N개의 동작들을 병렬적으로 수행할 수 있으므로, 종래 기술들을 이용하여 달성될 수 있는 더 큰 정도의 병렬화를 달성할 수 있음을 의미한다. 또한, 소정의 시간에 이용가능한 개수의 프로세서들 또는 프로세싱 코어들 사이에 N개의 픽셀들에 대한 N개의 동작들을 실질적으로 동일하게 나누어서, 프로세서들 또는 프로세싱 코어들 각각이 병렬적으로 거의 동일한 양(N/M)의 동작들을 처리할 수 있으므로, 종래 기술들에 의해 달성될 수 있는 것보다 상당히 더 나은 확장성을 달성할 수 있음이 당업자에게 인식될 것이다. "정렬 격자"의 각 노드는, 정보가 노드들 사이에 더 이상 전파될 수 없을 때까지, 정보를 전파할지 여부를 결정하고 정보를 전파하는 동작을 반복적으로(또는 반복주기로) 수행할 수 있다. 예를 들어, "정렬 격자"의 각 노드는 전역 변수(global variable)를 참조함으로써, 노드들 중 어느 노드(그 노드 자신을 포함함)가 갱신되었는지 여부를 실질적으로 결정할 수 있다.
다수의 노드들에 의해 표현되는 영상을 처리하는 예시적인 방법으로서, 하나 이상의 노드들 사이에 정보를 전파함으로써, 본 발명의 일 실시예는 다음의 동작들: (a) 영상의 각 노드에 대해, 그 이웃 노드들로부터 노드로 정보를 전파함으로써 노드를 갱신할 지 여부를 결정하는 동작, (b) 영상의 각 노드에 대해, 하나 이상의 그 이웃 노드들로부터 정보를 전파함으로써 노드를 갱신하는 동작을 포함할 수 있다. 노드를 갱신하는지 여부를 결정하는 (a)단계 및/또는 노드를 갱신하는 (b)단계는, 2이상의 노드들에 대하여 2 이상의 프로세서들 또는 프로세싱 코어들을 이용하여 병렬적으로 수행되어, 병렬 처리를 달성할 수 있다. 다른 예로서, 컴퓨팅 시스템(예를 들어, 컴퓨팅 디바이스)은 전술한 영상 처리 방법을 수행하도록 동작될 수 있다. 다른 예에서, 컴퓨터 판독가능(저장) 매체는 컴퓨팅 시스템이 전술한 영상 처리 방법을 수행하도록 실행될 때 실행가능한 코드를 저장할 수 있다. 영상의 처리는, 에지 추출(edge extraction), 영역 채우기(filling a region), 국부 최소값 및/또는 최대값 찾기, 경계 검출(boundary detection) 및/또는 침식(erosion), 거리 변환(distance transformation) 및 세선화(skeletonization)일 수 있다.
다수의 노드들에 의해 표현되는 영상은, 영상의 또 다른 노드(예를 들어, 소스 노드)에서 하나의 노드로 정보가 전파될 수 있는지 여부를 결정함으로써 처리될 수 있으므로, 멀티프로세싱 또는 멀티-코어 프로세서들의 이점을 이용하여 더 큰 병렬화 및 확장성을 얻을 수 있다. 또한, 소정의 시간에 이용가능한 개수의 프로세서들 또는 프로세싱 코어들 사이에 N개의 픽셀들에 대한 N개의 동작들을 실질적으로 동일하게 나누어 수행할 수도 있다.
본 발명은 첨부의 도면과 결합하여 다음의 상세한 설명에 희해 쉽게 이해될 것이고, 여기에서 유사한 참조 번호들은 유사한 구성 요소를 지정한다.
도 1은 본 발명의 일 실시예에 따른 영상 처리 시스템(IPS)을 나타낸다.
도 2a는 본 발명의 일 실시예에 따른 IPS에 의해 처리하기 적합한 예시적인 2차원 그래프의 일부를 나타낸다.
도 2b는 본 발명의 일 실시예에 따른 IPS에 수행될 수 있는 제1 처리 단계(또는 제1 반복주기)의 출력을 나타내는 그래프를 나타낸다.
도 2c는 본 발명의 일 실시예에 따른 IPS에 의해 수행될 수 있는 제2 처리 단계(또는 반복주기)를 나타낸다.
도 2d는 본 발명의 일 실시예에 따른 IPS에 의해 수행될 수 있는 제3 처리 단계(또는 반복주기)을 나타낸다.
도 3은 본 발명의 일 실시예에 따른 영상의 하나 이상의 노드들 사이에 정보를 전파함으로써, 다수의 노드들에 의해 표현되는 영상 처리 방법을 나타낸다.
도 4a 및 4b는 본 발명의 일 실시예에 따른 영상의 노드들에 대해 병렬적으로 수행될 수 있는 예시적인 동작들을 나타낸다.
도 4c는 본 발명의 일 실시예에 따른 정렬 격자를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 영상 처리 시스템(IPS)을 나타낸다.
도 2a는 본 발명의 일 실시예에 따른 IPS에 의해 처리하기 적합한 예시적인 2차원 그래프의 일부를 나타낸다.
도 2b는 본 발명의 일 실시예에 따른 IPS에 수행될 수 있는 제1 처리 단계(또는 제1 반복주기)의 출력을 나타내는 그래프를 나타낸다.
도 2c는 본 발명의 일 실시예에 따른 IPS에 의해 수행될 수 있는 제2 처리 단계(또는 반복주기)를 나타낸다.
도 2d는 본 발명의 일 실시예에 따른 IPS에 의해 수행될 수 있는 제3 처리 단계(또는 반복주기)을 나타낸다.
도 3은 본 발명의 일 실시예에 따른 영상의 하나 이상의 노드들 사이에 정보를 전파함으로써, 다수의 노드들에 의해 표현되는 영상 처리 방법을 나타낸다.
도 4a 및 4b는 본 발명의 일 실시예에 따른 영상의 노드들에 대해 병렬적으로 수행될 수 있는 예시적인 동작들을 나타낸다.
도 4c는 본 발명의 일 실시예에 따른 정렬 격자를 나타낸다.
배경 기술 부분에서 설명한 바와 같이, 디지털 이미징은 다양한 환경 및 시스템에서 수많은 애플리케이션들에 대해 넓게 이용된다. 예를 들어, 영상 처리 기법들은 일반적으로 유용하다.
본 발명은 컴퓨팅 환경 및/또는 컴퓨팅 시스템에서 영상들을 처리하는 영상 처리 기법에 관한 것이다. 또한, 무엇보다도, 개시된 영상 처리 기법들은 종래의 기법들을 이용하여 달성될 수 있는 것보다 상당히 더 큰 병렬성 및 확장성을 달성할 수 있다. 특히, 영상의 노드들 사이의 정보의 전파를 요구하는 영상 처리 기법은 개시된 영상 처리 기법으로부터 상당한 이점을 가질 수 있다. 당업계에 알려진 바와 같이, 영상은 많은 노드들(예를 들어, 그래프에서 노드들)에 의해 표현될 수 있다. 영상은 다수의 단계들 또는 반복주기로 처리될 수 있다. 그래프 "G(V,E)"에 정렬 격자 계산을 적용하기 위하여, V에서 v는 2-D 영상에서 하나의 픽셀일 수 있고, 3-D 영상에서 하나의 화소(volex)일 수 있다. 더 일반화하기 위하여, V에서 v는 픽셀들의 규칙적인 청크일 수 있다. 예를 들어, v는 영상에서 2 픽셀 by 3 픽셀의 직사각형일 수 있다. 더 낮은 해상도의 영상을 위해서, 그래프에서 노드(정렬 격자들에서 하나의 격자)는 직사각형 영역을 나타낼 수 있다. 제1 영상 처리 단계 동안, 하나의 노드(소스 노드)로부터 정보는 하나 이상의 다른 노드들(이하에서, "하나 이상의 이웃 노드들"이라 함)로 전파될 수 있다. 후속 단계에서, 정보는 소스 노드의 이웃 노드로부터 다른 이웃노드들로 전파될 수 있다. 단지 명확성을 위해서, 제1 노드로 전파될 수 있는 정보를 가진(또는 정보를 포함하는) 어떤 노드는 제1 노드의 "이웃 노드"라고 한다. 그러나, "이웃 노드"가 꼭 인접한 노드이거나 물리적으로 이웃하거나 지역적으로 인접한 노드일 필요는 없다. 영상 처리 알고리즘에 따라 다른 노드로 실질적으로 전파될 수 있는 정보를 포함하는 어떤 노드도 "이웃 노드"로 간주될 수 있다.
본 발명의 일 측면에 따르면, 다수의 노드들로 표현되는 영상은 영상의 하나의 노드에서 다른 노드로 정보가 전파될 수 있는지 여부를 결정함으로써 처리될 수 있다. 즉, 소스 노드가 그 이웃 노드들로 정보를 전파할 수 있는지 여부를 결정하는 대신에, 영상의 노드는 정보가 그 하나 이상의 다른 노드들(예를 들어, "이웃 노드들")로부터 그 노드로 정보가 전파될 수 있는지 여부를 결정할 수 있다. 이 방법은 상당히 더 큰 병렬성 및 확장성을 허용함이 인식될 것이다. 결과적으로, 통상적으로 강도 높은 컴퓨팅 처리인 영상 처리는 오늘날 널리 퍼져있으며 넓은 범위에서 이용가능한 멀티프로세싱 또는 멀티 코어 프로세스를 이용함으로써 더 빠르고 더욱 효과적으로 수행될 수 있다.
개념적으로, 영상은 본 발명의 다른 측면에 따라 영상은 다수의 노드들의 "정렬 격자"(예를 들어, 영상의 픽셀들의 정렬 격자)로서 표현될 수 있다. 당업자들은, "정렬 격자"에서, 2 이상의 노드들이 정보(또는 데이터)의 전파와 관련하는 동작들을 병렬적으로(또는 실질적으로 또는 실질적으로 동시에) 수행할 수 있음을 인식할 수 있을 것이다. 사실, "정렬 격자"의 각 노드는 이들 동작들을 병렬적으로 수행할 수 있다. 예를 들어, 영상 처리의 소정의 단계에서, 각 노드는 그 이웃 노드(들)로부터 정보를 전파함으로써 그 자신을(또는 그 정보를) 갱신할 것인지 여부를 결정하고, 그에 따라 하나 이상의 그 이웃 노드들로부터 정보를 전파함으로써 그 자신을(또는 그 정보를) 갱신할 수 있다. 당업자에게 인식될 수 있는 바와 같이, 이는, N개의 픽셀들로 이루어진 영상들에 대하여, N개의 동작들을 병렬적으로 수행할 수 있고, 그럼으로써, 종래 기술을 이용하여 달성되는 것보다 더 큰 정도의 병렬화를 달성할 수 있음을 의미한다. 또한, 소정의 시간에 이용가능한 다수 개의 프로세서들 또는 프로세싱 코어들 사이에 N개의 픽셀들에 대한 N개의 동작들을 실질적으로 동일하게 나누어서, 프로세서들 또는 프로세싱 코어들 각각 하나가 병렬적으로 거의 동일한 양(N/M)의 동작들을 처리함으로써, 종래 기술을 이용하여 달성되는 것보다 더 상당히 나은 확장성을 달성할 수 있음이 당업자에게 인식될 것이다. "정렬 격자"의 각 노드는 정보를 전파하는지 여부를 반복적으로(또는 반복주기로) 결정하여, 노드들 사이에 정보가 더 이상 전파될 수 없을 때까지 정보를 전파할 수 있다. 예를 들어, "정렬 격자"의 각 노드는 (노드 자신을 포함하는)노드들 중 어느 노드가 갱신되었는지 여부를, 전역 변수를 참조하여 실질적으로 결정할 수 있다.
본 발명의 이들 측면에 따른 실시예들은 도 1 내지 4c를 참조하여 후술된다. 그러나, 당업자는 이들 도면에 대해 제공된 상세한 설명이 설명적인 목적이며, 본 발명은 이들 실시예들을 넘어 확장될 수 있음을 쉽게 인식할 것이다.
도 1은 본 발명의 일 실시예에 따른 영상 처리 시스템(IPS; 100)을 나타낸다. IPS(100)는 예를 들어, 실행가능 컴퓨터 코드를 실행하도록 동작할 수 있는 컴퓨터 시스템(예를 들어, 컴퓨터)로서 제공될 수 있다. 예를 들어, 컴퓨터 시스템으로서, IPS(100)는 하나 이상의 프로세서 또는 프로세싱 코어("코어"), 및 휘발성 및 비휘발성 메모리를 포함하는 메모리(도시되지 않음)를 포함할 수 있음은 당업자에게 쉽게 인식될 것이다.
도 1을 참조하면, IPS(100)는 입력 데이터(또는 입력 영상)(102)를 수신할 수 있고(또는 수신하도록 동작할 수 있고) 입력 데이터를 처리하여 출력 데이터(또는 출력 영상)(104)을 제공할 수 있다. 일반적으로, 입력 데이터(102) 및 출력 데이터(104)를 포함하는 데이터는 당업계에 알려진 바와 같이 컴퓨터 판독가능 저장 매체(예를 들어, 메모리, 하드 디스크)에 저장될 수 있다. 입력 데이터(102)는 처리될 영상(또는 입력 영상(102))을 대표할 수 있고, 출력 데이터(104)는 처리된 영상(또는 출력 영상(104))을 대표할 수 있다. 처리중인 입력 영상(102)은 당업계에 알려진 바와 같이, 예를 들어, 2차원 또는 3차원 디지털 영상일 수 있다. 통상적으로, 입력 데이터(102)는 다수의 노드를 포함하는(또는 다수의 노드로 표현될 수 있는) 영상을 대표한다. 노드들은 예를 들어, 도 1에서 예시적인 입력 데이터(102a 또는 102b)에 의해 표현되는 2D 및 3D 그래프들과 같은, 2D 또는 3D 공간에서 그래프의 일 부분일 수 있다.
더욱 상세하게는, IPS(100)는 한 개 이상의 입력 영상 노드들 사이에 정보를 전파함으로써 (입력 데이터(102)로 표현되는) 입력 영상을 실질적으로 처리하도록 동작할 수 있다. 당업자에게 인식될 수 있는 바와 같이, 정보는 예를 들어, 하나 이상의 규칙들에 따라 그리고/또는 하나 이상의 조건들이 만족됨에 따라, 노드들 사이에 전파될 수 있다. 예를 들어, 규칙들 및/또는 조건 데이터(106)는 또한 입력으로서 제공되어 IPS(100)에 의해 수신될 수 있다. 즉, IPS(100)는 노드들 사이에 정보를 전파함으로써 다수의 노드들에 의해 표현되는 입력 영상(102)를 처리하도록 동작될 수 있다. 노드는 영상(102)의 노드들 사이에서 전파될 정보(또는 데이터)와 관련되거나 전파될 정보(또는 데이터)를 포함할 수 있다. 정보(예를 들어, 데이터)는 예를 들어, 하나 이상의 특성을 가지는 것과 같이 노드를 효과적으로 식별하는데 이용될 수 있다(예를 들어, 노드는 경계 노드로서 레이블에 의해 효과적으로 식별될 수 있다). 예시적인 입력 영상(102a)을 참조하면, 노드 A(102a1)는 다른 노드들로 전파될 수 있는 정보를 포함할 수 있다. IPS(100)에 의해 수행되는 영상 처리의 결과로서, 노드 A(102a1)의 정보는 출력 영상(104)으로서 도시된 바와 같이, 노드 B 및 노드 C(104b 및 104c)로 전파될 수 있다.
더 자세히 설명하기 위해서, 도 2a는 본 발명의 일 실시예에 따라 IPS(100)에 의해 처리하기에 적합한 예시적인 2차원 그래프(200)의 일부를 나타낸다. 그래프(200)는 예를 들어, 도 1에 도시된 입력 영상(102a)을 대표할 수 있다. 도 2a를 참조하면, 1에서 25까지 번호가 매겨진 25개의 노드들이 도시된다. 예시적인 2차원 그래프(200)에서, 노드 7 및 노드 19만이 정보를 가진다. 그러나, 이 정보는 그래프(200)가 처리될 때 노드 7에서 노드 1, 노드 3, 노드 4, 노드 5 및 노드 6 및 노드 13으로 실질적으로 전파될 수 있다. 유사하게, 노드 19의 정보는 노드 13, 노드 18, 노드 20, 노드 24 및 노드 25로 실질적으로 전파될 수 있다. 그래프(200)의 에지들은 예를 들어, (도 1에 도시된) 규칙들 및 조건들(106)에 기초하여 정의될 수 있다.
전술한 바와 같이, 그래프(200)는 IPS(100)(도 1에 도시됨)에 의해 처리된 입력 영상을 나타낼 수 있다. 도 2b는 본 발명의 일 실시예에 따라 IPS(100)에 의해 처리될 수 있는 영상 처리의 제1 처리 단계(또는 제1 반복주기)의 출력을 대표하는 그래프(210)를 나타낸다. 더욱 상세하게는, 도 2a에 도시된 그래프(200)를 처리할 때, IPS(100)는 그래프(200)의 각 노드(노드 1에서 노드 25)에 대해, 그 이웃 노드들로부터 정보를 전파함으로써 노드의 정보를 갱신할 지 여부를 결정할 수 있다.
도 2b를 참조하면, 개념적으로, 노드 1 내지 노드 25의 각각은, 노드들이 정보를 가진 하나 이상의 이웃 노드를 가지는지 여부를 독립적으로 결정할 수 있다. 예를 들어, 사실상, 노드들(노드 1, 노드 3, 노드 4, 노드 5, 노드 6 및 노드 13)은 이 노드들에 전파될 수 있는 정보를 가진 이웃 노드, 즉, 노드 7를 별개로 그리고 독립적으로 각각 결정할 수 있으며, 이 노드들은 노드 7로부터 그들 자신으로 그 정보를 별개로 그리고 독립적으로 전파할 수 있다. 유사하게, 노드들(노드 13, 노드 18, 노드 20, 노드 24 및 노드 25)는 노드 19의 정보를 독립적으로 그리고 개별적으로 그들 자신으로 전파할 수 있다. 종종 "소스" 노드들이라고도 하는 노드 7 및 노드 13의 관점으로부터 정보를 실질적으로 전파할 수 있는 종래 기술과 극명하게 대비되는 점은, IPS(100)가 모든 노드 각각의 관점으로부터 정보를 효과적으로 전파할 수 있다는 점이다. 결과적으로, 노드, 예를 들어, 노드 8은 이용가능한 규칙들에 따라 정보를 전파하지 못하거나 전파할 수 없더라도, 노드 8은 이웃 노드에 대해 확인할 수 있다(예를 들어, 노드 8은 그래프(210)에서 다른 노드로 "연결"되지 않으므로, 정보는 노드 8로 전파될 수 없다).
그러나, 각 노드에 대해 수행되는 동작들은 병렬적으로 또는 실질적으로 동시에 수행될 수 있음이 인식될 것이다. 즉, 그래프(210)에 대해, 25개의 별개의 동작들은, 각 노드에 대해 하나씩, 병렬적으로 수행될 수 있다. 개념적으로, 이는 그래프(210)의 그 노드가 이웃 노드를 가지는지 그리고/또는 그 노드가 이웃 노드를 가지는 것으로 결정하면 이웃 노드로 그 정보를 전파하는지 여부를, 각 노드가 그래프(210)의 다른 노드들와, 병렬적으로 결정할 수 있음을 의미한다.
정보가 이전 단계 또는 반복주기에서 적어도 하나의 노드에 의해 전파된 한, 그래프(210)의 각 노드는 이웃 노드로부터 정보를 전파하는지 여부를 조사하는 것을 실질적으로 계속할 수 있다. 더 상세하게 설명하기 위하여, 도 2c는 본 발명의 일 실시예에 따라 IPS(100)에 의해 처리될 수 있는 처리의 제2 단계 또는 반복주기를 나타낸다. 도 2c를 참조하면, 처리의 제2 단계 또는 반복주기에서, 노드 4는 실질적으로 그 정보를 노드 3으로 전파한다. 이 정보는 도 2b에 도시된 처리의 제1 단계 또는 반복주기에서 노드 7로부터 노드 3에 의해 미리 전파되었다. 도 2b에 도시된 처리의 제1 단계 또는 반복주기에서, 노드 4는 노드 3으로부터 어떤 정보도 전파하지 않지만, 처리는 제2 단계로 계속하거나 반복한다. 제2 단계에서, 노드 4가 정보를 가지는 이웃 노드 즉, 노드 3을 가지는지를 결정하고 그 정보를 노드 3으로부터 자신에게로 전파할 수 있다. (도 1에 도시된) 규칙들 및/또는 조건들(106)은 예를 들어, 노드 1, 노드 6 및 노드 13으로부터 노드 7의 갱신을 허용하지 않는데 이용될 수 있다.
유사하게, 프로세스의 제3 단계 또는 반복주기에서, 노드 5는 노드 4가 노드 3으로부터 정보를 획득한 후에 노드 4로부터 정보를 실질적으로 전파할 수 있다. 도 2d는 본 발명의 일 실시예에 따른 IPS(100)에 의해 처리될 수 있는 처리의 제3 단계 또는 반복주기를 나타낸다. 이 처리는 이전의 단계 또는 반복주기에서, 어떤 노드도 정보를 전파하지 않은 것으로 결정될 때까지 계속할 수 있다. 예를 들어, 제4 반복주기의 처리 후에, 어떤 정보도 노드들 중 어떤 노드로 전파될 수 없으며, 처리는 완료될 수 있다. 당업자는 노드들 중 어떤 노드가 갱신되었는지 여부의 결정은, 예를 들어, 전역 변수(global variable)를 이용하여 수행될 수 있음을 쉽게 알 것이다. 또한, 프로세스의 적어도 2개의 단계 또는 반복주기(예를 들어, 현재 및 이전의 반복주기)에 대한 노드의 상태가 저장될 수 있다. 더욱이, 당업자는 IPS(100)는 개념적으로 영상을 처리하기 위해 "정렬 격자" 또는 "정렬 격자 계산"을 이용할 수 있음을 인식할 것이다. 특히, "정렬 격자"는 다양한 BFS(Breadth First Search) 그래프 운행 알고리즘을 구현하는데 매우 적합하다.
도 3은 본 발명의 일 실시예에 따른 영상의 하나 이상의 노드들 사이에 정보를 전파함으로써, 다수의 노드들로 표현되는 정보를 처리하는 방법(300)을 나타낸다. 방법(300)은, 예를 들어, 도 1에 도시된 IPS(100)에 의해 수행될 수 있다.
도 3을 참조하면, 초기에, 영상의 각 노드는 그 이웃들(또는 이웃 노드들)로부터 정보를 전파함으로써 그 자신을(또는 노드와 관련된 정보를) 갱신할 지 여부를 결정한다(302). 각 노드는 다른 노드들로부터 독립적으로 그리고 별개로 이 결정을 할 수 있다(또는 이 결정은 각 노드를 위해서 이루어질 수 있으며, 또는 이 결정은 다른 노드들을 위해서 이루어질 수 있다). 더욱이, 각 노드는 병렬적으로, 또는 다른 노드들과 실질적으로 또는 효과적으로 동기하여 또는 동시에 이 결정을 할 수 있다. 예를 들어, 다수의 결정들은 도 3에 도시된 결정(304a 및 304b)에 의해 제안된 바와 같이 별개로 그리고 독립적으로 이루어질 수 있으며, 결정(304a 및 304b)의 결과에 따라서, 각 노드는 동작들(306a 및 306b)에 도시된 바와 같이, 이웃 노드들로부터 정보를 전파함으로써, 다른 노드로부터 별개로 그리고 독립적으로 그 자신(또는 그 정보)을 갱신할 수 있다. 동작들(306a 및 306b)은 병렬적으로, 또는 다른 노드들과 실질적으로 또는 효과적으로 동시에 또는 다른 노드들과 동시에 이루어질 수 있다. 그 후에, 영상의 처리를 종료하는 것으로 결정된다(308). 일반적으로, 이 결정(308)은 예를 들어, 노드들이 동기적으로 또는 비동기적으로 갱신되는 지 여부에 따라 하나 이상의 기준에 기초하여 이루어질 수 있다. 노드들이 비동기적으로 갱신되면, 이 결정(308)은 노드들에 의해 다양한 기준에 따라 이루어질 수 있다. 노드들이 동기적으로 갱신되면, 이 결정(308)은 예를 들어, 어떤 노드가 다른 노드들과 독립적으로 그리고 별개로 각 노드에 의해 갱신되었는지 여부에 기초하여 (예를 들어, 이웃 노드들로부터 정보를 전파함으로써 노드가 그 자신을 갱신한 후 어떤 노드에 의해 설정될 수 있는 전역 변수를 확인함으로써) 이루어질 수 있다. 대안적으로, 이 결정(308)은 한 번 이루어질 수 있다. 어떤 경우에, 영상의 처리를 종료하지 않는 것으로 결정되면(308), 방법(300)은 각 노드에 대해, 하나 이상의 노드 이웃들(또는 노드의 이웃 노드들)로부터 정보를 전파함으로써 그 노드를 갱신하는지 여부를 결정하는 단계로 진행한다(302). 방법(300)은 영상 처리를 종료하도록 결정될 때까지(308), 전술한 바와 같은 유사한 방식으로 계속될 수 있다. 정보가 다수의 이웃 노드들로부터 전파될 수 있으면, 전파의 순서가 결정되고 정보는 결정된 순서에 따라 전파될 수 있다. 일반적으로, 다수의 이웃 노드들로부터의 정보는 어떤 식으로 생각된 적절한 방식으로 전파될 수 있다(예를 들어, 순서에 기초한 전파, 하나 이상의 선택된 이웃들로부터의 전파 및 하나 이상의 다른 이웃들로부터의 정보의 무시).
상술한 바와 같이, (도 3에 도시된) 방법(300)은 병렬 처리 애플리케이션들에 특히 적합하다. 더욱 상세하게는, 그 영상 처리의 각 반복주기 또는 단계에서, 영상의 각 노드에 대한 동작들은 본 발명에 따라 병렬적으로 처리될 수 있다. 더 상세하게 설명하기 위하여, 도 4a는 본 발명의 일 실시예에 따라 멀티 프로세서들 및/또는 프로세싱 코어들(400)에 의해 병렬적으로 처리되는 다수의 노드들을 나타낸다. 노드들(402)은, 예를 들어, 도 3에 도시된 방법(300)에 의해 처리되는 영상의 노드들을 나타낸다. 도 4a를 참조하면, 영상 처리 방법의 반복주기에서, 영상의 각 노드(402)와 관련된 동작들은 프로세서 또는 프로세싱 코어(400A)에 의해 병렬적으로 수행될 수 있다. 예를 들어, 영상 처리의 주어진 반복주기 또는 단계에서, 노드(402A)와 관련된 동작들은 다른 프로세서 또는 프로세싱 코어(400B)에서 실행된 다른 노드(402B)와 관련된 동작들과 병렬적으로 프로세서 또는 프로세싱 코어(400A)에서 실행될 수 있다. 이는 많은 N개의 노드들에 의해 표현되는 영상을 처리하는 주어진 반복주기 또는 단계에서, 동일한 N개의 프로세서 또는 프로세싱 코어들이 서로 병렬적으로 그래프의 모든 N개의 노드들과 관련된 동작을 효과적으로 수행하기 위해 이용될 수 있음을 의미한다.
도 4b는 본 발명의 일 실시예에 따른 영상의 노드들에 대해 병렬적으로 수행될 수 있는 예시적인 동작(450)을 나타낸다. 예를 들어, 동작 450은 도 4b에 도시된 노드들 452 중 각각에 의하여 병렬적으로 수행될 수 있다. 개념적으로, 동작 450은 노드의 관점에서 또는 노드에 의해 수행될 수 있다. 도 4b를 참조하면, 노드는 노드가 이웃 노드를 가지는지 여부를 결정할 수 있다(452). 노드가 이웃 노드를 가지지 않는 것으로 결정하면(452), 노드는 어떤 부가 동작을 수행할 필요가 없거나 또는 동작들(450)이 끝날 수 있다. 반면에, 노드가 정보를 가진 적어도 하나의 이웃 노드를 가진다고 결정하면(452), 노드는 하나 이상의 규칙들 및/또는 조건들이 하나 이상의 이웃 노드들로부터 정보의 전파를 허용하는지 여부를 결정할 수 있다(454). 노드는 그 정보를 전파하지 않도록 결정하면(454), 노드는 어떤 부가적인 동작을 수행할 필요가 없거나 동작들(450)이 끝날 수 있다. 그렇지 않으면, 노드는 정보를 가진 하나 이상의 노드들로부터 정보를 전파할 수 있다(456). 노드는 그 동작들(또는 처리)가 끝나는지 여부를 일반적으로 결정할 수 있으며(458), 그에 따라 동작들(450)이 끝날 수 있다. 전술한 바와 같이, 이 결정(458)은 예를 들어, 어떤 노드들에서 변화가 없음을 나타내는 전역 변수에 기초하여 이루어질 수 있다.
본 발명이 그래프 운행의 전파 동작을 시뮬레이션하기 위하여 정렬 격자들을 이용함으로써 영상들에 대한 그래프 운행을 병렬화하기 위해 이용될 수 있음이 인식될 것이다. 종래의 그래프 운행 알고리즘에서, 소스 노드들은 그들 근처의 이웃들로 정보를 적극적으로 전파한다. 이에 비해, 정렬 격자 계산(또는 계산 모델)에서, 소스 노드들은 수동적이 되고, 각 노드는 정보가 어떤 소스들에 의해 각 노드로 전파될 수 있는지 여부를 확인할 수 있다. 필수적으로, 계산은 반전된다. 도 4c를 참조하면, 격자 7 및 격자 19는 그들의 이웃 픽셀들로 정보를 전달할 소스 노드들이다. 종래의 그래프 운행 알고리즘들에서, 격자 7은 격자들 1, 2, 3, 6, 8, 11, 12 및 13으로 정보를 전송할 것이고, 격자 19는 격자들 13, 14, 15, 18, 20, 23, 24 및 25로 정보를 전송할 것이다. 격자 7 및 격자 19는 그들의 이웃들로 병렬적으로 정보를 전송할 수 있지만, 각 소스 노드에 대해 아직 8개의 직렬적 전파 계산들이 있다. 비교하면, 정렬 격자 계산에서, 모든 25개의 격자들은, 그 격자들이 그들의 이웃들에 의해 갱신될 수 있는지 여부를 보기 위하여 그들 근처의 이웃들을 확인할 수 있다. 예를 들어, 하나의 전파 계산은 모든 격자들의 상태를 갱신하기에 충분하다. 정렬 격자는 BFS 그래프 운행을 위해 이용될 수 있다.
BFS 그래프 운행의 행동을 시뮬레이션하기 위한 정렬 격자 계산은 아래의 같이 요약된다. 변수 "i"는 정렬 격자 반복주기에 대한 카운터이다. P0, P1, ..., Pi,...는 반복주기 i 후의 전파 결과들이다. 초기에, P0는 S로 설정된다. 즉, 정보는 소스 노드 세트 S에 있는 픽셀들에 저장되기만 한다. 모든 다른 픽셀들에 대한 정보는 비어 있다. 라인 3내지 라인 9에서, 정렬 격자 계산들에 의한 각 픽셀의 상태는 반복적으로 갱신될 수 있다. 변수 "changed"는 모든 프로세서들에 의해 액세스될 수 있는 전역 변수이다. 어떤 픽셀에 어떤 변화가 있으면, 젼역 변수 "changed"는 참(true)으로 설정될 것이다. 그렇지 않으면, 그것은 거짓(false)으로 남을 것이다. 어떤 특정 픽셀이 갱신되었는지를 알 필요는 없다. 어떤 픽셀이 갱신되었는지 여부를 아는 것으로 충분하다. 예를 들어, 전역 변수 "changed"를 설정하기 위하여 동기화 또는 로킹(locking)을 할 필요는 없다. 라인 6에서, 각 픽셀의 상태를 갱신하는 계산은 모든 이용가능한 프로세서들로 분배될 수 있다. 각 픽셀상의 계산은 동일하고 독립적이므로, 프로세싱 작업은 모든 이용가능한 프로세서들에 균등하게 분배될 수 있다. 어떤 픽셀에도 변화가 없으면, 정렬 격자 계산은 라인 9에서 중단될 것이며, 최신의 결과들은 라인 10으로 반환된다.
위에 도시된 박스에서, I는 입력 영상이고, S는 정보가 전파될 수 있는 소스 노드들의 초기 세트를 나타낸다. R은 하나의 픽셀에서 다른 픽셀로 정보가 전파될 수 있는지 여부를 나타내는 규칙들을 나타내고, N은 픽셀의 이웃들의 정의를 나타낸다. P는 각 픽셀에 저장된 적정한 정보를 가지는 최종 영상을 나타낸다.
아래에 도시된 Check_Update 서브 루틴은, 각각의 정렬 격자 계산 동안, 각 픽셀에서 행해질 수 있는 예시적인 계산들을 제공한다. 모든 프로세서들은 각 픽셀에 대한 상태를 병렬적으로 갱신하기 위해 이 서브 루틴을 이용할 수 있다. 라인 1 내지 라인 5에서, 서브 루틴은 그 이웃들 N(p)로부터 픽셀 p로 전파될 수 있는 어떤 정보가 있는지를 검증한다. 라인 3에서, 정보의 전파가 유효하다는 것은, 이웃 픽셀 q 및 p가 그 전파 규칙 R(q, p)을 만족하고, q에서 정보는 비어 있지 않음을 의미한다. 라인 6 내지 8에서, p로 다수 개의 정보 전파가 필요한 경우, 정보 전파의 순서는 첫번째로 결정될 수 있고, 그런 다음 전파는 우리가 특정한 순서에 따라 수행될 수 있다. 우리는 전파를 하기 전에 전파 순서를 결정할 수 있으므로, 어떤 레이스 컨디션(race condition)도 여기에서 일어나지 않는다. 라인 9 및 10에서, 정보를 p로 전파할 수 있는 단 하나의 이웃이 있으면, 그것은 즉시 수행된다. 라인 11 및 12에서, 우리는 픽셀 p의 상태(status)를 확인한다. p의 상태가 변하면, 우리는 전역 변수 "changed"를 참으로 설정한다.
종래의 병렬 BFS 그래프 운행 알고리즘들과 비교해서, 여러 이점들은 그래프 운행 행동을 시뮬레이션하기 위해 정렬 격자들을 적용함으로써 실현될 수 있다. 이러한 이점 중 하나는 상대적으로 더 큰 정도의 병렬화를 달성하는 점이다. 기존의 병렬 BFS 그래프 운행 알고리즘에 대해, 소스 노드들에 대한 계산은 병렬적으로 수행될 수 있다. 그러나, 정렬 격자 계산에서, 소스 노드들로 연결하는 모든 노드들은 병렬적으로 갱신될 수 있다. 일반적으로, 소스 노드들의 개수는 그들이 연결되어 있는 노드들의 개수보다 훨씬 작다. 따라서, 정렬 격자들 계산은 더 큰 병렬화를 표현할 수 있다. 도 4c를 참조하면, 예를 들어, 격자 7 및 격자 19는 병렬적으로 정보를 전파할 수 있는 경우 2-웨이 병렬화(2-way parallelism)를 달성한다. 정렬 격자들 계산을 위하여, 격자들 1, 2, 3, 6, 8, 11, 12, 13, 14, 15, 18, 20, 23, 24 및 25는 그들의 상태를 병렬적으로 갱신할 수 있다. 이는 15-웨이 병렬화이다. 이는 나이브 2-웨이 병렬화(naive 2-way parallelism) 방법보다 더 크다.
그래프 운행 행동을 시뮬레이션하기 위한 정렬 격자들을 적용하는 또 다른 이점은 더 나은 확장성 및 로드 밸런싱이다. 그래프 운행 알고리즘들에 대하여, 일반적으로 정보를 전파하기 위하여 상이한 소스 노드들 중 각각 하나에 대해 얼마나 많은 계산이 요구되는지 미리 알려지지 않는다. 따라서, 상이한 프로세서들에 대해 작업 부하들에 균형을 이루는 것은 어렵다. 종래의 분산된 그래프들은 균형있는 그래프 부분들을 정의하는데 어려움을 격는다. 태스크 큐 방법들(task queue approaches)은 더 나은 밸런싱 성능을 가질 수 있다. 그러나, 태스크 수집 및 재분배는 비용이 많이 들 수 있다. 정렬 격자들에 대하여, 모든 격자들에 대한 계산들은 모두 동일할 수 있다. 예를 들어, 작업 부하는 더 쉽게 균형이 이루어질 수 있다. 더욱이, 더 많은 프로세서들이 이용가능하면, 더 많은 격자들은 병렬적으로 갱신될 수 있다. 그래서, 확장성은 프로세서들의 개수에 선형적이다.
본 발명의 또 다른 이점은, "레이스 컨디션들"이 제거될 수 있다는 것이다. 여러 소스 노드들이 동일한 격자에 대해 정보를 전파하면, 격자의 갱신 순서는 일반적으로 비결정적이며, 레이스 컨디션들이 일어날 수 있으며, 고려되어야 한다. 그러나, 정렬 격자 계산을 위하여, 격자가 스스로 갱신하기 전에, 격자는 자신으로 정보를 전송할 수 있는 모든 이웃들을 확인하고 스스로 액세스 순서를 결정할 수 있어서, 어떤 레이스 컨디션들도 일어나지 않을 것이다. 도 4c를 다시 참조하면, 도 4에서 격자 13에 대해, 격자 7 및 격자 19 둘다 정보를 격자로 전파할 수 있으며, 그래서 양 측으로부터 정보를 처리하는 방법을 결정할 수 있다.
다음의 설명은 직렬 그래프 운행 알고리즘, 기존의 병렬 그래프 운행 알고리즘, 및 정렬 격자 방법의 계산 복잡도를 비교한다. n개의 소스 노드들이 있다는 가정하에서, 각 노스 노드로부터 정보는 각각 a1, a2, ..., an 픽셀들로 각각 전파될 것이다. 직렬 알고리즘의 계산 복잡도는 이다. p개의 프로세서들을 가진 기존의 병렬 그래프 운행 알고리즘에 대하여, 작업 부하는 제어하기 힘들기 때문에, 각 프로세서는 n/p 소스 노드들을 처리하는 것으로 가정한다. 계산 복잡도는 이고, 프로세서들의 상한(upper bound) 개수는 n이다. 정렬 격자들 계산을 위해서, 격자들의 개수(영상에서 픽셀들의 개수)를 m이라고 하고, 소스 노드 i가 전파할 수 있는 최대 거리는 di이고, 계산 복잡도는 이고, 지금 p는 m까지 크기를 조정할 수 있다고 하자. m개의 프로세서가 있다고 가정하면, 병렬 그래프 운행에 비하여 병렬적 정렬 격자 계산을 위한 성능은 대비 이다. 통상 이므로, 정렬 격자 방법은 병렬 그래프 운행 방법에 비하여 큰 이점을 가진다.
전술한 본 발명의 다양한 측면들, 특징들, 실시예들 또는 구현예들은 별도로 또는 다양한 조합으로 이용될 수 있다. 본 발명의 많은 특징들 및 이점들은 기재된 설명으로부터 명백하며, 따라서, 첨부된 청구항들은 본 발명의 이러한 모든 특징들 및 이점들을 포함하도록 의도된다. 또한, 수많은 변형 및 변경이 당업자에게 쉽게 수행될 수 있으므로, 본 발명은 예시되고 기술된 바와 같은 정확한 구성 및 동작들에 제한되어서는 안된다. 따라서, 적당한 변형들 및 균등물들이 본 발명의 범위 내에 의존될 수 있다.
Claims (21)
- 컴퓨팅 시스템에서, 다수의 노드들에 의해 표현되는 영상을, 하나 이상의 영상의 노드들 사이에서 정보를 전파함으로써, 병렬 처리하는 컴퓨터로 구현된 방법으로서,
(a) 상기 영상의 각 노드에 대해, 그 이웃 노드들로부터 상기 노드로 정보를 전파함으로써 상기 노드를 갱신할 지 여부를 결정하는 단계;
(b) 상기 영상의 각 노드에 대해, 상기 결정하는 (a)단계에서 상기 노드를 갱신하는 것으로 결정한 때, 하나 이상의 그 이웃 노드들로부터 상기 정보를 전파함으로써 상기 노드를 갱신하는 단계;
(c) 상기 갱신하는 (b)단계에 의해 상기 노드들 중 어느 노드가 갱신되었는지 여부를 결정하는 단계; 및
(d) 상기 (a)단계, 상기 (b)단계 및 상기 (c)단계를 반복하는 단계를 포함하고,
여기에서, 적어도 상기 노드를 갱신하는지 여부를 결정하는 (a)단계 및/또는 상기 노드를 갱신하는 (b)단계는 2이상의 노드들에 대하여 병렬적으로 수행되는 방법. - 제1항에 있어서,
상기 노드는 정렬 격자로 실질적으로 표현되고, 상기 정렬 격자의 각 노드는 상기 영상의 노드를 나타내고, 적어도 다음의 동작들: 상기 노드를 갱신할 지 여부를 결정하는 (a)단계 및 상기 노드를 갱신하는 (b)단계는, 상기 정렬 격자에서 노드들 각각을 위하여 병렬적으로 수행되거나, 노드들 각각에 의하여 실질적으로 병렬적으로 수행되는 방법. - 제1항에 있어서,
하나 이상의 다음의 동작들: 상기 노드를 갱신할 지 여부를 결정하는 (a)단계, 상기 노드를 갱신하는 (b)단계 및 상기 (b)단계에 의하여 노드들 중 어느 노드의 정보가 갱신되었는지를 상기 결정하는 (c)단계는, 2 이상의 노드들 각각이 그들 자신의 정보가 갱신되었는지 여부를 결정하도록, 2 이상의 노드들에 대하여 병렬적으로 수행되는 방법. - 제1항에 있어서,
상기 영상은 상기 다수의 노드들을 포함하는 그래프로 표현되고 상기 영상의 처리는 상기 그래프의 그래프 운행(Graph Traversal)인 방법. - 제4항에 있어서,
상기 그래프 운행은 노드들의 BFS(Breadth First Search) 정렬(ordering)에 따라 상기 그래프를 운행하는 방법. - 제5항에 있어서,
상기 노드들의 BFS 정렬은 하나 이상의 규칙들에 따라서 그리고/또는 하나 이상의 조건들이 만족될 때, 하나 이상의 다른 노드들에 전파될 수 있는 정보를 초기에 가지는 상기 그래프의 하나 이상의 소스 노드들과 연관되는 방법. - 제1항에 있어서,
상기 영상은 다수의 노드들을 가지는 그래프로서 표현될 수 있고, 상기 그래프의 각 노드는 이웃 노드들을 또한 정의하는 상기 그래프의 에지들에 따라 연결된 정렬 격자의 노드에 대응하고; 그리고,
제1 프로세싱 코어들 및/또는 유닛들이 제1 노드들의 이웃 노드들 각각으로부터 정보를 전파함으로써 상기 제1 노드들의 노드를 갱신하는지 여부를 결정하는 (a)단계를 수행하고, 상기 결정하는 단계(a)가 상기 노드를 갱신하는 것으로 결정하면, 상기 제1 노드들의 하나 이상의 이웃 노드들로부터 상기 정보를 전파함으로써 상기 제1 노드들의 상기 정보를 갱신하고,
제2 프로세싱 코어들 및/또는 유닛들이 제2 노드들의 이웃 노드들 각각으로부터 정보를 전파함으로써 상기 제2 노드들의 노드를 갱신하는지 여부를 결정하는 (a)단계를 수행하고, 상기 결정하는 단계(a)가 상기 노드를 갱신하는 것으로 결정하면, 상기 제2 노드들의 하나 이상의 이웃 노드들로부터 상기 정보를 전파함으로써 상기 제2 노드들의 상기 정보를 갱신하도록,
상기 제1 프로세싱 코어들 및/또는 유닛들 및 상기 제2 프로세싱 코어들 및/또는 유닛들에 의하여, 2 이상의 노드들에 대하여, 상기 노드를 갱신할 것인지를 결정하는 (a)단계 및 상기 정보를 갱신하는 (b)단계가 병렬적으로 수행되는 방법. - 제7항에 있어서,
상기 제1 프로세싱 코어들 및/또는 유닛들은 상기 제1 노드들의 정보가 갱신되었는지 여부를 더 결정하고, 상기 제2 프로세싱 코어들 및/또는 유닛들은 상기 제2 노드들의 정보가 갱신되었는지 여부를 더 결정하는 방법. - 제1항에 있어서,
상기 각 노드는 상기 영상의 픽셀과 연관되고, 상기 영상의 픽셀을 나타내는 방법. - 제1항에 있어서,
상기 정보는 상기 노드들 사이에 전파될 수 있는 복수 개의 레이블들 중 하나의 레이블을 포함하는 방법. - 제1항에 있어서,
상기 영상의 처리는 영상 인식용인 방법. - 제1항에 있어서,
상기 결정하는 (c)단계가 어떤 노드도 갱신되지 않았다고 결정할 때까지, 상기 (a)단계, 상기 (b)단계 및 (c)단계를 반복하는 단계를 더 포함하는 방법. - 제1항에 있어서,
상기 처리는, 에지 추출, 영역 채우기, 국부 최소값 및/또는 최대값 찾기, 경계 검출 및/또는 침식, 거리 변환 및 세선화 중 하나 이상에 이용되는 방법. - 제1항에 있어서,
상기 정보의 전파는 BFS(Breadth First Search)에 따라 수행되는 방법. - 제1항에 있어서,
상기 노드의 이웃 노드들로부터 상기 노드로 정보를 전파함으로써 상기 노드의 정보를 갱신할지 여부를 결정하는 (a)단계는,
(a1) 상기 노드가 정보를 가진 적어도 하나의 이웃 노드를 가지는지 여부를 결정하는 단계; 및
(a2) 상기 결정하는 (a1)단계가, 상기 노드가 정보를 가진 적어도 하나의 이웃 노드를 가지는 것으로 결정하면, 하나 이상의 규칙들 및/또는 조건들에 따라서, 상기 적어도 하나의 이웃 노드로부터 상기 노드로 정보를 전파할 지 여부를 결정하는 단계를 포함하는 방법. - 컴퓨팅 시스템으로서,
(a) 영상의 각 노드에 대하여, 노드의 이웃 노드들로부터 상기 노드로 정보를 전파함으로써, 상기 노드를 갱신할지 여부를 결정하는 단계;
(b) 상기 영상의 각 노드에 대하여, 상기 결정하는 (a)단계가 상기 노드를 갱신하는 것으로 결정하면, 하나 이상의 상기 노드의 이웃 노드들로부터 정보를 전파함으로써 상기 노드를 갱신하는 단계;
(c) 상기 갱신하는 (b)단계에 의하여 노드들 중 어떤 노드가 갱신되었는지 여부를 결정하는 단계; 및
상기 결정하는 (c)단계가 어떤 노드도 갱신되지 않았다고 결정할 때까지, 상기 (a)단계, 상기 (b)단계 및 상기 (c)단계를 반복하는 단계를 수행하도록 동작하는 컴퓨팅 시스템. - 제16항에 있어서,
상기 컴퓨팅 시스템은,
상기 노드를 정렬 격자로서 실질적으로 표현하고, 상기 노드를 갱신할지 여부를 결정하는 (a)단계 및 상기 노드를 갱신하는 (b)단계를, 상기 정렬 격자에서 2 이상의 노드들을 위하여 병렬적으로 수행하거나, 상기 2이상의 노드들에 의하여 실질적으로 병렬적으로 수행하도록 동작하는 컴퓨팅 시스템. - 제16항에 있어서,
상기 컴퓨팅 시스템은, 상기 정보를 갱신할지 여부를 결정하는 (a)단계, 상기 정보를 갱신하는 (b)단계, 및 상기 노드들 중 어떤 노드의 정보가 상기 갱신하는 (b)단계에 의해 갱신되었는지를 결정하는 (c)단계 중 하나 이상이, 2이상의 노드들 각각이 그들 자신의 정보가 갱신되었는지 여부를 결정하도록, 병렬적으로 수행하도록 더 동작하는 컴퓨팅 시스템. - 컴퓨터가 다수의 노드들에 의해 표현되는 영상을 상기 노드들 사이의 정보를 전파함으로써 처리하기 위하여 컴퓨터로 구현된 방법을 수행하도록 할 때, 적어도 컴퓨터로 실행할 수 있는 코드를 저장하는 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터로 구현된 방법은,
(a) 상기 영상의 각 노드에 대해, 그 이웃 노드들로부터 상기 노드로 정보를 전파함으로써 상기 노드를 갱신할 지 여부를 결정하는 단계;
(b) 상기 영상의 각 노드에 대해, 상기 결정하는 (a)단계에서 상기 노드를 갱신하는 것으로 결정할 때, 하나 이상의 그 이웃 노드들로부터 상기 정보를 전파함으로써 상기 노드를 갱신하는 단계;
(c) 상기 갱신하는 (b)단계에 의해 상기 노드들 중 어느 노드가 갱신되었는지 여부를 결정하는 단계; 및
(d) 상기 (c)단계가 어떤 노드도 갱신되지 않은 것으로 결정할 때까지, 상기 (a)단계, 상기 (b)단계 및 상기 (c)단계를 반복하는 단계를 포함하고,
여기에서, 적어도 상기 노드를 갱신하는지 여부를 결정하는 (a)단계 및/또는 상기 노드를 갱신하는 (b)단계는 2이상의 노드들에 대하여 병렬적으로 수행되는 컴퓨터 판독가능 저장 매체. - 제19항에 있어서,
상기 컴퓨터로 구현된 방법은,
적어도 상기 노드를 갱신하는지 여부를 결정하는 (a)단계 및/또는 상기 노드를 갱신하는 (b)단계의 적어도 하나 이상을, 상기 노드들 중 2 이상에 대하여 병렬적으로 수항하는 단계를 더 포함하는 컴퓨터 판독가능 저장 매체. - 제1항에 있어서,
상기 컴퓨터로 구현된 방법은,
조건이 만족될 때까지 상기 (a)단계, 상기 (b)단계 및 상기 (c)단계를 반복하는 단계; 및
미리 설정된 반복주기 횟수동안 상기 (a)단계, 상기 (b)단계 및 상기 (c)단계를 반복하는 단계 중 하나 이상을 포함하는 방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US25773609P | 2009-11-03 | 2009-11-03 | |
US61/257,736 | 2009-11-03 | ||
US12/687,013 US9047674B2 (en) | 2009-11-03 | 2010-01-13 | Structured grids and graph traversal for image processing |
US12/687,013 | 2010-01-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110049644A KR20110049644A (ko) | 2011-05-12 |
KR101702996B1 true KR101702996B1 (ko) | 2017-02-06 |
Family
ID=43925520
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100056771A KR101734449B1 (ko) | 2009-11-03 | 2010-06-15 | 한정된 개수의 계층상에 레이블 전파를 위한 정렬 격자 |
KR1020100056772A KR101702996B1 (ko) | 2009-11-03 | 2010-06-15 | 영상 처리를 위한 정렬 격자 및 그래프 운행 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100056771A KR101734449B1 (ko) | 2009-11-03 | 2010-06-15 | 한정된 개수의 계층상에 레이블 전파를 위한 정렬 격자 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9047674B2 (ko) |
KR (2) | KR101734449B1 (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9047674B2 (en) * | 2009-11-03 | 2015-06-02 | Samsung Electronics Co., Ltd. | Structured grids and graph traversal for image processing |
US9235455B2 (en) * | 2011-03-16 | 2016-01-12 | Microscan Systems, Inc. | Multi-core distributed processing using shared memory and communication link |
KR101885216B1 (ko) | 2011-12-30 | 2018-08-30 | 삼성전자주식회사 | 터치 센서 시스템의 멀티 터치 구분 방법 |
US10281892B2 (en) * | 2012-08-02 | 2019-05-07 | Siemens Aktiengesellschaft | Pipelining for cyclic control systems |
CN102867171B (zh) * | 2012-08-23 | 2014-11-19 | 山东师范大学 | 一种基于标记传播与邻域嵌入保持的人脸表情识别方法 |
US8990209B2 (en) * | 2012-09-06 | 2015-03-24 | International Business Machines Corporation | Distributed scalable clustering and community detection |
US20140307055A1 (en) | 2013-04-15 | 2014-10-16 | Microsoft Corporation | Intensity-modulated light pattern for active stereo |
US20160092956A1 (en) * | 2014-09-30 | 2016-03-31 | Jonathan Su | Garment size mapping |
CN110603821A (zh) | 2017-05-04 | 2019-12-20 | 杜比国际公司 | 渲染具有表观大小的音频对象 |
CN109993191B (zh) * | 2018-01-02 | 2021-07-06 | 中国移动通信有限公司研究院 | 信息处理方法及装置、电子设备及存储介质 |
US11451561B2 (en) * | 2018-09-14 | 2022-09-20 | Cisco Technology, Inc. | Automated creation of lightweight behavioral indicators of compromise (IOCS) |
CN109685879B (zh) * | 2018-12-13 | 2023-09-29 | 广东启慧城市信息有限公司 | 多视影像纹理分布的确定方法、装置、设备和存储介质 |
CN111079078B (zh) * | 2019-11-25 | 2022-04-22 | 清华大学 | 面向结构网格稀疏矩阵的下三角方程并行求解方法 |
CN112818626B (zh) * | 2021-02-26 | 2022-08-23 | 北京华大九天科技股份有限公司 | 一种基于多重掩膜版的版图布线方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030068074A1 (en) * | 2001-10-05 | 2003-04-10 | Horst Hahn | Computer system and a method for segmentation of a digital image |
US20030077001A1 (en) * | 2001-07-09 | 2003-04-24 | Syugo Yamashita | Interpolation pixel value determining method |
US20080019587A1 (en) * | 2006-07-21 | 2008-01-24 | Wilensky Gregg D | Live coherent image selection |
US20080123945A1 (en) * | 2004-12-21 | 2008-05-29 | Canon Kabushiki Kaisha | Segmenting Digital Image And Producing Compact Representation |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5332968A (en) * | 1992-04-21 | 1994-07-26 | University Of South Florida | Magnetic resonance imaging color composites |
US5657362A (en) * | 1995-02-24 | 1997-08-12 | Arch Development Corporation | Automated method and system for computerized detection of masses and parenchymal distortions in medical images |
DE60037360T2 (de) * | 1999-05-28 | 2008-12-04 | Nippon Telegraph And Telephone Corp. | Verfahren und Vorrichtung zur Geschwindigkeitsmessung von Fahrzeugen mit ein Bildverarbeitungssystem |
US7227893B1 (en) | 2002-08-22 | 2007-06-05 | Xlabs Holdings, Llc | Application-specific object-based segmentation and recognition system |
US7676091B2 (en) * | 2004-01-07 | 2010-03-09 | Ramot At Tel Aviv University Ltd. | Method and apparatus for analysing ultrasound images |
US7444019B2 (en) * | 2004-02-18 | 2008-10-28 | Siemens Medical Solutions Usa, Inc. | System and method for GPU acceleration of push-relabel algorithm on grinds |
JP4396376B2 (ja) * | 2004-04-22 | 2010-01-13 | 日本電気株式会社 | 図形読み取り方法及びその装置並びに主要色抽出方法及びその装置 |
US7428331B2 (en) * | 2004-11-30 | 2008-09-23 | Seiko Epson Corporation | Page background estimation using color, texture and edge features |
US7689038B2 (en) * | 2005-01-10 | 2010-03-30 | Cytyc Corporation | Method for improved image segmentation |
US7536064B2 (en) * | 2005-05-31 | 2009-05-19 | Microsoft Corporation | Image comparison by metric embeddings |
US7613328B2 (en) * | 2005-09-09 | 2009-11-03 | Honeywell International Inc. | Label detection |
US7623683B2 (en) * | 2006-04-13 | 2009-11-24 | Hewlett-Packard Development Company, L.P. | Combining multiple exposure images to increase dynamic range |
US8437054B2 (en) | 2006-06-15 | 2013-05-07 | Sharp Laboratories Of America, Inc. | Methods and systems for identifying regions of substantially uniform color in a digital image |
US7864365B2 (en) | 2006-06-15 | 2011-01-04 | Sharp Laboratories Of America, Inc. | Methods and systems for segmenting a digital image into regions |
US20090022403A1 (en) * | 2007-07-20 | 2009-01-22 | Fujifilm Corporation | Image processing apparatus, image processing method, and computer readable medium |
JP2009082463A (ja) * | 2007-09-28 | 2009-04-23 | Fujifilm Corp | 画像分析装置、画像処理装置、画像分析プログラム、画像処理プログラム、画像分析方法、および画像処理方法 |
US8441535B2 (en) * | 2008-03-05 | 2013-05-14 | Omnivision Technologies, Inc. | System and method for independent image sensor parameter control in regions of interest |
US7969884B1 (en) * | 2008-05-09 | 2011-06-28 | Nortel Networks Limited | Method and system for weight and rate scheduling |
US8904381B2 (en) * | 2009-01-23 | 2014-12-02 | Hewlett-Packard Development Company, L.P. | User defined data partitioning (UDP)—grouping of data based on computation model |
US8046373B2 (en) * | 2009-01-25 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Structured parallel data intensive computing |
US8948513B2 (en) * | 2009-01-27 | 2015-02-03 | Apple Inc. | Blurring based content recognizer |
US9047674B2 (en) | 2009-11-03 | 2015-06-02 | Samsung Electronics Co., Ltd. | Structured grids and graph traversal for image processing |
-
2010
- 2010-01-13 US US12/687,013 patent/US9047674B2/en not_active Expired - Fee Related
- 2010-01-13 US US12/686,999 patent/US8630509B2/en active Active
- 2010-06-15 KR KR1020100056771A patent/KR101734449B1/ko active IP Right Grant
- 2010-06-15 KR KR1020100056772A patent/KR101702996B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030077001A1 (en) * | 2001-07-09 | 2003-04-24 | Syugo Yamashita | Interpolation pixel value determining method |
US20030068074A1 (en) * | 2001-10-05 | 2003-04-10 | Horst Hahn | Computer system and a method for segmentation of a digital image |
US20080123945A1 (en) * | 2004-12-21 | 2008-05-29 | Canon Kabushiki Kaisha | Segmenting Digital Image And Producing Compact Representation |
US20080019587A1 (en) * | 2006-07-21 | 2008-01-24 | Wilensky Gregg D | Live coherent image selection |
Also Published As
Publication number | Publication date |
---|---|
US9047674B2 (en) | 2015-06-02 |
US20110103711A1 (en) | 2011-05-05 |
KR20110049643A (ko) | 2011-05-12 |
US8630509B2 (en) | 2014-01-14 |
US20110103712A1 (en) | 2011-05-05 |
KR101734449B1 (ko) | 2017-05-11 |
KR20110049644A (ko) | 2011-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101702996B1 (ko) | 영상 처리를 위한 정렬 격자 및 그래프 운행 | |
CN109754064B (zh) | 执行解卷积的神经网络的方法和装置 | |
US11675507B2 (en) | Method and apparatus for allocating memory space for driving neural network | |
US11721085B2 (en) | Generating and evaluating mappings between spatial point sets in multi-levels | |
Chen et al. | Localizing the delaunay triangulation and its parallel implementation | |
Tatsumi et al. | An FPGA accelerator for PatchMatch multi-view stereo using OpenCL | |
US20240136024A1 (en) | Apparatus and method with molecular dynamics simulation | |
Ben Boudaoud et al. | Implementation and comparison of binary thinning algorithms on GPU | |
US12014505B2 (en) | Method and apparatus with convolution neural network processing using shared operand | |
Lee et al. | Parallel computation of the Euclidean distance transform on a three-dimensional image array | |
Jiménez et al. | Three‐dimensional thinning algorithms on graphics processing units and multicore CPUs | |
Ralha et al. | Parallel refinement of slanted 3D reconstruction using dense stereo induced from symmetry | |
Yao et al. | Hybrid cost aggregation for dense stereo matching | |
US11823412B2 (en) | Generating and evaluating mappings between spatial point sets with constraints | |
Yu et al. | A parallel strategy to accelerate neighborhood operation for raster data coordinating CPU and GPU | |
Youkana et al. | Parallelization strategy for elementary morphological operators on graphs: distance-based algorithms and implementation on multicore shared-memory architecture | |
Jie et al. | Psp-mvsnet: deep patch-based similarity perceptual for multi-view stereo depth inference | |
Cebrian et al. | Massively-parallel column-level segmentation of depth images | |
Tian et al. | Improving the performance of the CamShift algorithm using dynamic parallelism on GPU | |
Wu et al. | Parallel integral image generation algorithm on multi-core system | |
Banz et al. | Architectures for stereo vision | |
Syed et al. | Accelerated Stereo Vision Using Nvidia Jetson and Intel AVX | |
Fathy et al. | Parallel Implementation of 3D Model Reconstruction of Monocular Video Frames in a Dynamic Environment. | |
Wang et al. | Massively parallel GPU computing for fast stereo correspondence algorithms | |
Chen et al. | Parallel implementation of dense optical flow computation on many-core processor |
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 |