KR101887043B1 - 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법 - Google Patents

그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법 Download PDF

Info

Publication number
KR101887043B1
KR101887043B1 KR1020170065089A KR20170065089A KR101887043B1 KR 101887043 B1 KR101887043 B1 KR 101887043B1 KR 1020170065089 A KR1020170065089 A KR 1020170065089A KR 20170065089 A KR20170065089 A KR 20170065089A KR 101887043 B1 KR101887043 B1 KR 101887043B1
Authority
KR
South Korea
Prior art keywords
processor
image
fog
amount
memory
Prior art date
Application number
KR1020170065089A
Other languages
English (en)
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 KR1020170065089A priority Critical patent/KR101887043B1/ko
Application granted granted Critical
Publication of KR101887043B1 publication Critical patent/KR101887043B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • G06T5/002
    • G06T5/007
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/24Fluid dynamics

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)

Abstract

호스트 프로세서와 병렬처리가 가능한 디바이스로 구성된 시스템에 의하여 입력영상에서 연무를 제거하는, 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 관한 것으로서, (a) 상기 입력영상에서 다크 채널을 추출하는 단계; (b) 추출한 다크 채널 중에서 가장 밝은 곳에 비해 밝기가 소정의 범위 이내를 가지는 픽셀의 값을 대기산란광으로 설정하는 단계; (c) 상기 입력영상의 각 컬러 채널의 값들을 상기 대기산란광 값으로 나누어서 영상을 정규화하고, 정규화된 영상에서 다크 채널을 재추출하는 단계; (d) 사전에 정해진 상수 값에서 재추출된 다크채널의 값을 차감하여 전달량을 구하되, 상기 전달량에 사전에 정해진 가중치를 곱하여 차감하는 단계; (e) 양방향 필터를 적용하여 전달량을 정제하는 단계; 및, (f) 정제된 전달량을 이용하여 연무를 제거하여 상기 입력영상을 복원하는 단계를 포함하고, 상기 (a)단계 내지 (d)단계, 및, (f)단계는 상기 호스트 프로세서에 의해 수행되고, 상기 (e)단계는 상기 그래픽 프로세서에 의해 수행되는 구성을 마련하여, 연무 제거를 위한 연산 중에서 전달량을 정제하는 과정을 그래픽 프로세서를 통해 병렬처리함으로써, 보다 빠르게 연산할 수 있다.

Description

그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법{ Hi-speed computational method for removing sea-fog on the images using graphic processors and parallel processing }
본 발명은 연안을 항해하는 선박에 장착되는 선박용 블랙박스 혹은 디지털 카메라에서 획득한 영상에서 연무를 제거하되, 병렬처리가 가능한 그래픽 프로세서를 이용하여 연무를 보다 효과적으로 제거하는, 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 관한 것이다.
일반적으로, 연안 해역에는 많은 중소형 선박들이 운항을 하기 때문에, 연무가 발생하면 항로 방향으로 시야가 확보되지 않아 선박 간 충돌사고가 자주 발생한다.
특히, 새벽과 일출 전/후의 시간대에 집중되어 연안에 안개가 발생하고 있어, 이 시간대에 연안 인근을 항해하는 선박들의 운항에 영향을 미치고 있다. 즉, 연안 해역의 경우 산재된 섬과 인근 항만 출입항 선박으로 인한 교차지점이 많아 해상교통이 매우 혼잡하고, 최근 기상 이변 등의 영향으로 잦은 안개가 발생하여 운항 선박들의 항해위험도가 증가하고 있다. 더욱이, 온난화 현상으로 계절에 관계없이 빈번한 짙은 농무현상으로 선박 충돌, 좌초 등의 안전사고가 우려되고 있다.
또한, 최근 연안 해역에서 상선의 해양사고는 점진적으로 감소하는 경향을 보이고 있으나, 어선의 경우는 반대로 증가하는 경향을 보이고 있다. 서해와 남해 영해에서 발생한 충돌사고 중 어선관련 충돌사고(어선간, 어선-상선간 충돌)가 대부분을 차지하고 있고, 인명피해 역시 어선과 같은 중소형 선박에서 대부분 발생하고 있다.
그러나 연안에서 가장 빈번하게 일어나고 있는 해난사고는 근접거리 물체에 대한 레이더의 검출 불능에 따른 충돌사고로 운항자의 조선실수가 충돌 원인의 비중이 크다. 또한, 사고 선종은 중소형 어선이 가장 많았으며 원인은 운항 부주의, 정비 불량 등으로 조사되고 있다. 즉, 선박 및 종사자들이 느끼는 위해요소를 파악하는 이전연구를 보면 어선의 불법어로와 통신장비가 미 탑재된 선박으로 인한 사고의 위험이 높은 것으로 보고되고 있다.
따라서 연무에 의해 시계가 저하된 경우 항행 중인 선박의 안전항해를 위해서는 당직사관의 전방 시각정보가 매우 중요하다.
상기와 같은 문제점을 해결하고자, 정부 당국에서 연안에 레이더와 선박자동위치추적시스템(AIS)에 의한 안전관리체제를 확대하고 있다. 또한, 연무가 발생하기 전에 예측하는 기술이나, 발생한 연무를 감시하는 모니터링 기술 등이 많이 연구되고 있다. 또한, 선박간 사고를 방지하기 위한 충돌회피 자동제어 시스템에 관한 연구가 활발히 진행되고 있다.
또한, 국외에서는 선박용 항해 관측 장비에 대한 연구와 관심이 늘어나고 있다. 일본에서 최근 RADAR의 ARPA(Automatic radar plotting aids, 자동충돌예방장치) 정보를 이용한 관측 장비에 대한 개발이 이루어지고 있다. 또한, IMO(International Maritime Organization, 국제해사기구)의 E-Navigation의 전략이행계획에 따르면 안전항해를 위한 항해상황인식의 중요성이 크게 강조되고 있다.
그러나 현단계의 항해상황은 레이터, ARPA 및 AIS(Automatic Identification System, 선박자동식별시스템)에 추가하여 시각적 견시도구로서 쌍안경에 의존하고 있다. 또한, 상기와 같은 선박용 항해 관측 장비나 충돌회피 시스템 등은 고가의 장비이기 때문에, 어선과 같은 중소형 선박에는 장착하기 어렵다는 문제점이 있다. 연안에서 잦은 조업으로 선박충돌사고의 대부분을 차지하고 있는 소형 어선들에도 쉽게 설치하여, 사고비율을 낮출 수 있는 기술이 절실하다.
이를 위해, 선박에 카메라 등을 설치하고 선박의 항해 방향을 촬영하고, 촬영된 영상에서 안개를 제거하고 충돌 위험 등을 인식할 수 있을 것이다. 종래기술로서, 촬영된 영상에서 안개를 제거하여 영상을 보정하는 기술들이 제시되고 있다[특허문헌 1,2]. 또한, 안개제거 기술을 선박 위에서 촬영된 영상을 대상으로 하는 연무제거기술이 제시되고 있다[특허문헌 3].
그러나 선박에서 촬영된 영상은 실시간으로 영상이 보정되어야 하기 때문에, 영상을 처리하는 속도가 매우 중요하다.
[특허문헌 1] 한국특허등록공보 제10-1361644호(2014.02.13.공고) [특허문헌 2] 한국특허등록공보 제10-1279374호(2013.07.04.공고) [특허문헌 3] 한국특허등록공보 제10-1705536호(2017.02.06.공고)
본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 선박에 장착되는 선박용 블랙박스 혹은 디지털 카메라에서 획득한 영상에서 연무를 제거하되, 병렬처리가 가능한 그래픽 프로세서를 이용하여 연무를 보다 효과적으로 제거하는, 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법을 제공하는 것이다.
상기 목적을 달성하기 위해 본 발명은 호스트 프로세서와 병렬처리가 가능한 그래픽 프로세서로 구성된 시스템에 의하여 수행되어, 입력영상에서 연무를 제거하는, 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 관한 것으로서, (a) 상기 입력영상에서 다크 채널을 추출하는 단계; (b) 추출한 다크 채널 중에서 가장 밝은 곳에 비해 밝기가 소정의 범위 이내를 가지는 픽셀의 값을 대기산란광으로 설정하는 단계; (c) 상기 입력영상의 각 컬러 채널의 값들을 상기 대기산란광 값으로 나누어서 영상을 정규화하고, 정규화된 영상에서 다크 채널을 재추출하는 단계; (d) 사전에 정해진 상수 값에서 재추출된 다크채널의 값을 차감하여 전달량을 구하되, 상기 전달량에 사전에 정해진 가중치를 곱하여 차감하는 단계; (e) 양방향 필터를 적용하여 전달량을 정제하고 반복하는 단계; 및, (f) 정제된 전달량을 이용하여 연무를 제거하여 상기 입력영상을 복원하는 단계를 포함하고, 상기 (a)단계 내지 (d)단계, 및, (f)단계는 상기 호스트 프로세서에 의해 수행되고, 상기 (e)단계는 상기 그래픽 프로세서에 의해 수행되는 것을 특징으로 한다.
또, 본 발명은 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 있어서, 상기 호스트 프로세서는 상기 (a)단계 내지 (d)단계를 수행하여 구한 전달량을 상기 그래픽 프로세서의 글로벌 메모리로 복사하고, 상기 그래픽 프로세서는 상기 전달량을 다수의 SP(스트리밍 프로세서)에 병렬로 처리하고, 계산된 결과를 상기 글로벌 메모리에 저장하고, 저장된 결과를 메인메모리로 복사하고, 상기 호스트 프로세는 상기 메인메모리에 복사된 결과를 이용하여 상기 입력영상을 복원하는 것을 특징으로 한다.
또, 본 발명은 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 있어서, 상기 전달량 t(x)은 다음 수식 1에 의해 구하는 것을 특징으로 한다.
[수식 1]
Figure 112017050285204-pat00001
단, x는 영상의 위치를 나타내고, w는 가중치이고, c는 색상 채널 인덱스이고, I는 입력영상을 나타내고, A는 대기산란광을 나타내고, Ω(x)는 x점을 중심으로 한 일정 구간을 나타냄.
또, 본 발명은 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 있어서, 상기 (e)단계에서, 양방향 필터를 반복적으로 적용하여 상기 전달량을 정제하는 것을 특징으로 한다.
또, 본 발명은 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 있어서, 상기 (f)단계에서, 다음 수식 2으로 연무가 제거된 영상 J(x)를 구하는 것을 특징으로 한다.
[수식 2]
Figure 112017050285204-pat00002
단, t0는 사전에 정해지는 가중치 최소값임.
또, 본 발명은 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 있어서, 상기 (e)단계에서, 상기 양방향 필터에 의한 필터링은 다음 수식 3에 의해 계산되는 것을 특징으로 한다.
[수식 3]
Figure 112017050285204-pat00003
Figure 112017050285204-pat00004
단, t(x)는 정제된 전달량이고,
Figure 112017050285204-pat00005
는 정제 직전의 전달량이고, I(x)는 x좌표의 밝기이고, fr(∥I(xi)-I(x)∥)는 가우시안(Gaussian) 함수로 xi와 x좌표의 밝기에 의한 커널이고, gs(∥xi-x∥)는 좌표에 의한 커널임.
또, 본 발명은 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 있어서, 상기 그래픽 프로세서에 의해 양방향 필터의 연산이 수행되되, 양방향 필터의 밝기에 의한 커널 fr(∥I(xi)-I(x)∥)는 글로벌 메모리로 접근하여 계산되고, 좌표에 의한 커널인 gs(∥xi-x∥)는 최대 커널의 크기에 따라 LUT(Look-up table) 형태로 공유메모리를 이용하여 연산되는 것을 특징으로 한다.
또, 본 발명은 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 있어서, 상기 호스트 프로세서와 상기 그래픽 프로세서는 서로 비동기화하여 독립적으로 작업을 수행하고, 독립적인 동작이 종료된 후에 스트림 동기화를 통하여 상기 그래픽 프로세서에서 수행한 결과를 획득하되, 상기 호스트 프로세서에서 처리된 결과를 이용하여, 상기 그래픽 프로세서에서 양방향 필터링의 연산을 수행하고, 상기 그래픽 프로세서에서 양방향 필터링의 연산을 수행하는 동안, 상기 호스트 프로세서에서 상기 입력영상의 다음 프레임에 대하여 연산을 수행하는 것을 특징으로 한다.
또, 본 발명은 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 있어서, 상기 호스트 프로세서에서 상기 (a)단계 내지 (d)단계의 명령어 입력과정(kernel load)과, 상기 (e)단계 내지 (f)단계의 동기화 과정을 두 개의 쓰레드로 각각 분리하여 실행시키되, 상기 명령어 입력과정의 쓰레드에서는 기다림 없이 계속 프로세싱을 수행하고, 상기 동기화 과정은 필터링과 연무를 제거하여 입력영상을 복원하는 것을 수행하는 것을 특징으로 한다.
또한, 본 발명은 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법을 수행하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
상술한 바와 같이, 본 발명에 따른 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 의하면, 연무가 발생하여 전방의 시계확보가 어려운 상황에서도 비교적 정확한 시각적 정보를 제공함으로써, 소형 부유물이나 소형 어선과 같은 위협을 조기 탐지할 수 있는 효과가 얻어진다.
또한, 본 발명에 따른 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 의하면, 연무 제거를 위한 연산 중에서 전달량을 정제하는 과정을 그래픽 프로세서를 통해 병렬처리함으로써, 보다 빠르게 연산할 수 있는 효과가 얻어진다.
도 1은 본 발명을 실시하기 위한 전체 시스템의 구성을 도시한 도면.
도 2는 본 발명의 일실시예에 따른 호스트 프로세서 및 범용 GPU의 구성에 대한 블록도.
도 3은 본 발명의 일실시예에 따라 GPU에서 처리되는 연산 단위의 예시도.
도 4는 본 발명의 일실시예에 따른 워프의 실행 스케쥴의 예시도.
도 5는 본 발명의 일실시예에 따른 안개발생과 디지털 카메라를 이용한 영상획득 과정을 시각화한 도면.
도 6은 본 발명의 일실시예에 따른 연무제거 영상의 예시로서, (a) 제거 전, (b) 제거 후의 영상.
도 7은 본 발명의 일실시예에 따른 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법을 설명하는 흐름도.
도 8은 본 발명의 일실시예에 따른 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법의 각 단계에서의 수행시간을 나타낸 표.
도 9는 본 발명의 일실시예에 따른 2D 배열 주소 맵핑에 대한 예시도.
도 10은 본 발명의 제1 실시예에 따른 단일 디바이스를 이용하여 구현한 병렬 구성의 타이밍을 나타낸 도면.
도 11은 본 발명의 제1 실시예에 따른 단일 디바이스 기반 병렬 구성의 비동기 실행을 이용한 타이밍도.
도 12는 본 발명의 제2 실시예에 따른 호스트 프로세서 및 다중 그래픽 프로세서를 이용한 구성도.
도 13은 본 발명의 제2 실시예에 따른 다중 디바이스 기반 병렬 구성의 비동기 실행을 이용한 타이밍도.
도 14는 본 발명의 실험에 따른 연무제거 방법을 적용한 결과 영상.
이하, 본 발명의 실시를 위한 구체적인 내용을 도면에 따라서 설명한다.
또한, 본 발명을 설명하는데 있어서 동일 부분은 동일 부호를 붙이고, 그 반복 설명은 생략한다.
먼저, 본 발명을 실시하기 위한 전체 시스템의 구성의 예들에 대하여 도 1 내지 도 4를 참조하여 설명한다.
도 1에서 보는 바와 같이, 본 발명에 따른 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법은 카메라 영상(또는 이미지)(10)을 입력받아 상기 영상(또는 이미지)에 대하여 연무를 제거하는 컴퓨터 프로그램에 의해 수행되는 것으로서, 특히, 호스트 프로세서(50)와, 적어도 1개의 디바이스(60)를 포함하는 연무제거 장치(40) 상에서 수행된다. 또한, 연무제거 장치(40)는 데이터를 저장하기 위한 메인 메모리(51)를 별도로 구성할 수 있다.
한편, 영상(10)은 시간상으로 연속된 프레임으로 구성된다. 하나의 프레임은 하나의 이미지를 갖는다. 또한, 영상(10)은 하나의 프레임(또는 이미지)을 가질 수도 있다. 즉, 영상(10)은 하나의 이미지인 경우에도 해당된다. 바람직하게는, 본 발명에서는 하나의 이미지(또는 프레임)에 대한 영상을 대상으로 한다.
다음으로, 호스트 프로세서(50)는 통상의 중앙처리장치(CPU)로서, 메인 메모리(51)에 필요한 데이터를 저장하고 작업을 처리하는 프로세서이다. 호스트 프로세서(50)는 작업을 다수의 쓰레드, 또는 2개의 쓰레드로 나누어 병렬 처리를 수행할 수 있다. 바람직하게는, 호스트 프로세서에 의해 처리되는 기능을 프로그래밍하는 프로그래밍 도구는 OpenMP(Open Multi-Processing, 오픈MP)에 의해 구현된다.
다음으로, 디바이스(60)는 범용 그래픽 프로세서(GPGPU, General Purpose computing on Graphic Processing Units)로 실시된다. 디바이스(60)는 1개 또는 다수 개로 구비된다. 특히, 디바이스(60)에 의해 처리되는 다중 프로그램(멀티 쓰레드)을 프로그래밍하는 도구는 CUDA 또는 OpenMP에 의해 구현된다.
도 2에서 보는 바와 같이, 디바이스(60) 내에는 하나의 DRAM(Global Memory, 전역 메모리)과 여러 개의 SM(Streaming Multiprocessor) 및 Load/Store 유닛 등을 가지고 있다. 하나의 SM은 여러 개의 SP(Streaming Processor)와 캐시메모리 등으로 이루어져 있으며, SP에서는 하나의 데이터의 연산을 처리할 수 있는 능력을 가지게 된다.
GPU내의 DRAM은 저장할 수 있는 데이터량은 크지만 여러 SM에서 동시 접근에 대한 병목 현상 및 접근에 대한 대기지연 등의 이유로 접근 속도는 느리다. 하지만 캐시 형태로 되어 있는 상수메모리(Constant Memory)나 SM 내부의 공유 메모리(Shared Memory, Parallel Data Cache)는 저장할 수 있는 데이터 량은 적지만 접근 속도가 빠르다. 따라서 일반적으로 많이 사용되는 파라미터는 상수 메모리나 공유 메모리를 사용하는 것이 유리하다.
병렬 프로그래밍을 위해, 앞에서 설명한 GPU내의 연산 단위인 SP 또는 SM을 할당하는 단위로 쓰레드(thread)와 블록(block), 및 그리드(grid)로 나눈다. 이때, 바람직하게는, GPU의 커널 코드의 변수를 설정할 수 있는 CUDA, OpenMP 등과 같은 프로그래밍 도구를 이용할 수 있다.
즉, CUDA는 쓰레드(thread)와 블록(block), 및 그리드(grid) 단위로 그래픽 프로세서(GPU) 내의 연산 단위를 구분한다. 도 3과 같이 하나의 블록은 3차원의 쓰레드로 구성할 수 있고, 하나의 그리드는 3차원의 블록으로 구성할 수 있다.
각 쓰레드는 GPU 내의 SP에 맵핑되며 연산하는 최소 단위로 하나의 블록 내의 최대 쓰레드의 개수는 GPU의 성능에 따라 결정된다. 또한 블록 내에 구성된 쓰레드는 인덱스를 가지고, 도 4와 같이 워프(warp) 단위로 동시에 실행된다. 따라서 모든 쓰레드를 효율적으로 동작시키기 위해서는 블록 당 쓰레드의 개수를 워프의 배수로 하는 것이 유리하다. 또한 예외처리가 필요한 부분에서는 워프 단위 내에서는 같은 조건으로 예외 처리하는 것이 동시 실행의 병렬성을 유지할 수 있다.
각 블록은 블록 내의 쓰레드에 따라서 하나 혹은 그 이상의 블록이 하나의 SM(Streaming Multi-Processor)으로 맵핑되어 동작한다. 블록 내의 모든 쓰레드 내에 할당된 레지스터의 개수가 SM내의 총 레지스터의 개수 이하로 될 경우 최대의 블록으로 할당할 수 있다. 또한 블록도 쓰레드와 같이 인덱스를 가지게 되며 모든 SM에 할당된 블록의 개수가 그리드당 총 블록의 수보다 적을 경우 모든 할당된 블록의 동작이 끝난 뒤 남은 블록들이 동작이 이루어진다.
또한, GPGPU의 동작은 SIMT(Single Instruction Multiple Thread)로 수행된다. 즉, 하나의 명령어로 여러 쓰레드를 동작하는 형태이다. GPU내의 하나의 SP(Streaming Processor, 실제 연산하는 H/W)는 4개의 쓰레드를 하나의 명령어(Instruction)로 수행한다. 하나의 SM(Streaming Multi-Processor)내의 모든 SP는 하나의 명령어를 동시에 처리하는데 이를 워프(Warp)라 하고 이 단위로 조건에 대하여 처리할 경우 GPGPU의 최대 성능을 낼 수 있다.
다음으로, 본 발명의 일실시예에 따른 영상 연무의 모델링에 대하여 도 5 및 도 6 참조하여 설명한다.
도 5에서 보는 바와 같이, 영상(10)은 선박에 설치된 카메라에 의해 촬영된 영상이다. 즉, 해상이나 야외 영상은 안개나 연기, 황사 등으로 대기 중에 미세한 입자들로 인해 빛의 산란 현상이 발생한다.
빛의 산란이란 빛이 공기 중의 입자들과 충돌하여 진행방향이 바뀌는 것이다. 이러한 다양한 날씨에도 영상 처리 기술 적용을 위해 깨끗한 영상을 얻기 위해 연구가 진행되고 있다. 특히, 잘 알려진 DCP(Dark Channel Prior) 알고리즘은 연무가 없는 영상에서는 일정 구역 내에 항상 0에 가까운 밝기를 가지는 화소 값이 존재한다는 관측에 기반한다. 연무가 짙은 영역일수록 일정 구역 내에 존재하는 가장 어두운 화소가 밝아진다는 성질을 이용하여 전달량을 구하고 이를 통해 영상을 복원한다.
연무가 낀 영상의 모델링은 나르심한(Narsimhan) 등이 처음 제안한 알고리즘에서 사용되는 아래의 수학식 1을 사용한다.
[수학식 1]
Figure 112017050285204-pat00006
여기서 I(x)는 입력된 영상, A는 연무의 밝기 정도를 나타내며, t(x)는 전달량으로 빛이 산란되지 않고 카메라까지 도달된 정도를 나타낸다. J(x)는 연무가 제거된 영상의 밝기 값이다. x는 화소의 위치를 나타낸다.
따라서 연무 제거 영상처리는 입력 영상 I(x)로부터 A, t(x), 그리고 J(x)를 구하는 것이다. 도 6에서 연무가 포함되어 있는 영상과 연무를 제거한 영상의 예를 보이고 있다.
다음으로, 본 발명의 일실시예에 따른 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 방법을 도 7을 참조하여 설명한다.
도 7에서 보는 바와 같이, 본 발명에 따른 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 방법은 입력영상에서 다크 채널을 검색하는 단계(S10), 다크 채널에서 최대 밝기 채널을 검색하는 단계(S20), 입력영상을 정규화하고 정규화된 영상에서 다크 채널을 재검색하는 단계(S30), 재검색된 다크 채널을 이용하여 전달량을 계산하는 단계(S40), 양방향 필터를 이용하여 전달량을 정제 및 반복하는 단계(S50), 및, 전달량을 이용하여 연무를 제거한 영상으로 복원하는 단계(S60)로 구성된다.
이하에서, 각 단계들을 보다 구체적으로 설명한다.
먼저, 입력영상에서 다크 채널(Dark Channel)을 산출한다(S10).
입력영상을 색상(RGB) 채널로 분리하고, 각 색상 채널에서 최소 밝기 채널을 산출하고, 최소 채널을 이용하여 다크 채널(Dark Channel)을 검색한다.
다크 채널(Dark Channel)이란 영상에서 일정한 패치사이즈 안에서 한 화소의 RGB값 중에 가장 작은 값의 집합으로 정의한다. RGB 화소 값 중 가장 작은 값을 구한 후 이 값을 그 영역의 대표 값으로 지정하여 최소(Min) 채널을 구한다. 그리고 이 최소(Min) 채널을 이용하여 9×9 마스크(Mask)를 통해 영역 내의 모든 화소 값을 대표 값으로 대체하여 얻은 채널이 다크 채널(Dark Channel)이다.
또한 연무가 없는 깨끗한 영상에서는 각 화소의 RGB값 중에 한 값이 0에 가까운 값이 되는 것을 볼 수 있다. 이를 식으로 표현하면 다음의 수학식 2와 같다.
[수학식 2]
Figure 112017050285204-pat00007
여기서, c∈{r,g,b}는 색상 채널 인덱스(color channel index)를 의미하고, Jc는 영상의 각 채널을 의미하고, Ω(x)는 x점을 중심으로 한 일정 구간을 나타낸다.
안개가 없는 일반적인 영상의 다크 채널(Dark Channel) 0에 가까우므로 다음과 같이 표현된다.
[수학식 3]
Figure 112017050285204-pat00008
다음으로, 다크 채널을 이용하여 대기산란광을 추측하여 산출한다(S20).
연무 값 A는 연무영상의 다크 채널(Dark Channel) 중에서 가장 밝은 곳으로부터 10% 밝기 이내의 범위를 가지는 픽셀의 값을 선택한다. 바람직하게는, 가장 밝은 곳의 범위를 0.1% 이내로 정한다.
가장 밝은 곳의 범위를 10% 이내 또는 0.1% 이내로 정하고 그 중에서 가장 밝은 값을 가지는 픽셀(화소)을 대기산란광(A)의 값으로 정한다. 대기산란광(A)는 다크 채널 중 10%의 밝기를 가지는 픽셀 중 가장 밝은 픽셀의 값을 의미한다. 즉, 다크채널 중에서 가장 밝은 곳으로부터 10% 범위내인 픽셀 중에서 가장 밝은 픽셀의 값을 대기산란광으로 설정한다. 구한 다크채널의 값들 중에서 가장 밝은 곳(값)으로부터 10% 이내의 범위의 다크 채널 값을 갖는 다크채널들의 위치 중에서, 해당 위치(x)의 픽셀의 밝기가 가장 밝은 값을 가지는 픽셀을 대기산란광의 값으로 정한다.
다음으로, 각 RGB 채널 또는 컬러 채널의 값들을 대기산란광 값으로 나누어서 영상을 정규화하고, 정규화된 영상에서 다크 채널(Dark Channel)을 다시 찾는다(S30).
다음으로, 재검색된 다크 채널을 이용하여 전달량을 추측한다(S40).
수학식 1의 양변에 최소(min) 연산자를 취해주고, A값으로 나누어 주면 아래와 같은 식을 얻는다.
[수학식 4]
Figure 112017050285204-pat00009
수학식 2와 3에 의해 수학식 4의 우측 항 중 J가 들어간 항을 0으로 가정할 수 있으므로 결과적으로 다음의 최종 수학식 5를 얻을 수 있다.
[수학식 5]
Figure 112017050285204-pat00010
하지만 위의 수학식 5를 그대로 적용하여 연무를 모두 제거할 경우 원근감이 모두 사라져 깊이 맵이 없는 비정상적인 영상처럼 보일 것이다.
이 현상을 막기 위해 수학식 5에 다음과 같이 상수 파라메터인 ω(0<ω<1)를 첨가하여 아주 작은 양의 연무를 남겼다.
[수학식 6]
Figure 112017050285204-pat00011
바람직하게는, ω의 값은 0.95로 설정한다. Ac 는 각 RGB값을 나타내는 벡터이다. 즉, Ac 는 대기산란광으로 선택된 픽셀의 RGB 벡터이다.
다음으로, 양방향 필터를 이용하여 전달량을 정제한다(S50).
전달량 정제하기 위하여, 양방향필터를 사용한다. 양방향 필터는 메모리를 적게 사용하지만 필터를 한회 수행한 화면은 양방향 필터를 수행하지 않은 화면에 비해 후광효과가 사라지긴 하지만 일정량 남아있다. 이러한 후광 효과를 눈에 보이지 않게 제거 하려면 반복적으로 양방향 필터를 수행해야 한다. 이와 같이, 양방향 필터를 반복적으로 수행하면, 경계선이 점점 선명해 지면서 블록효과로 발생하는 후광효과가 사라지게 된다.
필터의 크기는 패치 크기를 키울수록 전달량의 윤곽이 날카로워지고 실행시간이 커지게 된다. 따라서, 바람직하게는, 15×15의 양방향 필터의 패치를 사용한다.
한편, 상기 전달량 정제 단계(S50)는 사전에 정해진 횟수만큼 반복된다.
앞서 설명한 바와 같이, 양방향 필터를 반복적으로 수행하여, 경계선이 점점 선명해 지면서 블록효과로 발생하는 후광효과가 사라지도록 한다.
하지만 반복 횟수(M)가 8번이 넘어가게 되면 얇은 물체도 침식되는 현상이 나타남을 볼 수 있다. 침식 되어진 전달량은 연무 제거 연산을 거치게 되면 색바램 현상이 나타나기도 한다. 따라서 바람직하게는, 반복 횟수(M)를 3번으로 하여 침식되는 현상을 작게 나타나게 하였다.
다음으로, 전달량을 이용하여 연무를 제거한 영상을 복원한다(S60).
수학식 2와 3을 정리하면 최종 연무가 제거된 다음의 수학식을 얻는다.
[수학식 7]
Figure 112017050285204-pat00012
보통 전달량 t(x)가 0에 가까운 값을 가지게 된다. t(x)가 0에 가까우면 (I(x)-A) 값이 두 값의 차이에 따라 ±∞값으로 포화 되어 연무가 제거된 영상에서 잡음처럼 보일 수 있게 된다. 이를 막기 위해 적당한 값의 최소값이 t0이다. 보통 0.05에서 0.1 사이의 값으로 설정하면 적절하게 연무가 제거된 영상을 얻을 수 있다.
다음으로, 본 발명의 일실시예에 따른 카메라 영상의 연무 제거 방법에서 그래픽 프로세서를 이용하여 병렬로 수행하는 단계에 대하여 설명한다.
앞서 설명한 바와 같이, 그래픽 프로세서(60)는 하나의 명령어로 여러 쓰레드를 동작시킨다. 즉, GPU내의 하나의 SP(Streaming Processor, 실제 연산하는 H/W)는 4개의 쓰레드를 하나의 명령어(Instruction)로 수행한다. 즉, 작업들이 워프(Warp) 단위로 처리된다. 그런데 워프 단위 조건문을 수행하지 못할 경우 호스트 프로세서(CPU) 상에서 처리하는 것이 유리하다.
다음 수학식 8은 다크 채널(Dark Channel) 추출을 위한 식이다.
[수학식 8]
Figure 112017050285204-pat00013
여기서, Jdark(x)는 x 좌표의 다크 채널이고 Jc(x)는 입력 영상이다. 또한, min은 최소값을 추출하는 함수로 매 화소 값마다 조건문이 적용된다. 따라서 다크 채널(Dark Channel)의 추출 함수는 호스트 프로세서(50) 상에서 하는 것이 유리하다.
따라서, 조건문이 없는 전달량 정제의 양방향(Bi-lateral) 필터링만 GPGPU를 이용하여 수행한다.
구체적으로, 앞서 수학식 6에서 구한 전달량 t(x)를 호스트 프로세서(50)의 메인메모리(51)에서 디바이스 메모리(또는 그래픽 프로세서의 글로벌 메모리)로 복사한다. 이후 그래픽 프로세서에서 양방향 필터링에 대한 작업을 병렬처리하여 수행하고, 그 뒤 최종 결과를 다시 글로벌 메모리로 저장한다. 그리고 글로벌 메모리에서 메인 메모리(51)로 복사를 수행한다.
다음 수학식 9는 양방향(Bi-lateral) 필터링의 식이다.
[수학식 9]
Figure 112017050285204-pat00014
여기서, t(x)는 정제된 전달량이고,
Figure 112017050285204-pat00015
는 정제 직전의 전달량이다. I(x)는 x좌표의 밝기이다. fr(∥I(xi)-I(x)∥)는 가우시안(Gaussian) 함수로 xi와 x좌표의 밝기에 의한 커널이고, gs(∥xi-x∥)는 좌표에 의한 커널이다. 좌표에 의한 커널은 현재좌표(xi)와 컨벌루션을 수행중인 좌표(x)와의 차이를 가우시안 함수에 적용시킨 것이다.
또한, Wp는 가중치 함수로 수학식 10으로 나타낼 수 있다.
[수학식 10]
Figure 112017050285204-pat00016
수학식 9의 양방향(Bi-lateral) 필터링은 조건문 없는 컨벌루션의 형태이므로 GPGPU를 이용한 병렬 프로그램을 수행 시 상당한 성능 향상을 얻을 수 있다.
구체적으로, 하나의 쓰레드에서 수학식 9에서 좌표에 의한 커널을 미리 계산하여 공유메모리에 저장한다. 그리고 모든 쓰레드(결과 영상의 좌표와 매칭되는 쓰레드)에서 컨벌루션을 수행할 N×N의 화소의 값을 하나씩 글로벌 메모리에서 읽어와 나머지 수학식(밝기에 대한 커널과 컨벌루션)을 계산한다.
또한, 전달량 정제 단계(S50)(단계 S51을 포함)의 수행시간이 가장 많이 소요되기 때문에, 해당 단계를 병렬 수행하여 전체 수행시간을 줄일 수 있다.
앞서 카메라 영상의 연무 제거 방법의 각 단계별 수행시간을 도 8의 표에 나타내었다. 즉, 전달량 반복 정제 단계(S50,S51)은 양방향 필터(Bi-lateral Filter)를 이용하고 반복적으로 적용된다. 따라서 도 8의 표와 같이 다른 단계들에 비하여 많은 수행시간을 필요로 한다. 따라서 본 발명에서 이 전달량 정제 연산을 다중 그래픽 프로세서(Multi-GPGPU)를 사용하고, 병렬 프로그래밍을 이용하여 가속화 한다.
다음으로, 본 발명의 일실시예에 따라 병렬 수행 및 최적 수행을 위한 호스트 프로세서(50)의 메인 메모리(51)와, 디바이스(60)의 글로벌 메모리의 구성에 대하여 설명한다.
먼저, 호스트 프로세서(50)의 처리를 위해 초기 메인 메모리의 데이터 처리에 대하여 설명한다. 즉, 시스템을 구성할 때 입력 영상(카메라로부터 입력)의 크기가 고정되어 있다면 매 프레임마다 메모리 할당(초기화 과정)을 수행하는 것은 필요 없는 과정이다. 따라서 이 과정은 시스템이 처음 시작될 때 한 번의 초기화 과정을 통하여 모든 메모리를 할당하고 시스템이 종료되는 시점에서 한 번의 해제를 하는 것이 시스템의 성능 저하를 줄일 수 있다.
또한, 앞서 도 2에서는 호스트 프로세서 및, 범용 GPU의 각 메모리별 물리적 위치를 나타내었다. 글로벌 메모리는 호스트(CPU)로부터 병렬 처리할 데이터를 저장하는 메모리로 그래픽 카드 내의 오프칩 형태의 DRAM으로 큰 메모리 공간을 가지고 있다. 영상 데이터 같은 큰 데이터를 위한 메모리 공간으로 메모리 복사할 때는 128 바이트(Byte) 형태의 블록 형태로 전송을 수행하고, GPU 내의 모든 쓰레드에서 접근이 가능하다.
반면 공유 메모리(Shared Memory)는 GPGPU 온칩 형태의 캐시 메모리에 할당이 되며 하나의 블록내의 쓰레드에서만 서로 공유하며 접근이 가능하다. 공유 메모리는 캐시 메모리 형태로 되어 있기 때문에 DRAM의 글로벌 메모리에 비해 빠른 접근이 가능하나 적은 량의 데이터만 저장할 수 있다(약 16KB). 따라서 공유 메모리는 자주 사용되는 공통의 파라미터를 저장하여 사용하는 것이 유리하다.
GPU로 수행되는 양방향 필터의 밝기에 의한 커널 fr(∥I(xi)-I(x)∥)는 입력 영상에 따라 변하는 함수이므로 글로벌 메모리로 접근하여 계산을 하여야 하지만 좌표에 의한 커널인 gs(∥xi-x∥)의 xi와 x는 정수형태의 데이터 이므로 최대 커널의 크기에 따라 LUT(Look-up table) 형태로 공유메모리를 이용할 수 있다.
다음으로, 고정된 메모리(Pined Memory) 할당에 대하여 설명한다.
일반적인 메모리 할당을 했을 때 영상과 같은 큰 메모리를 할당할 경우 가상 메모리 기술에 의하여 보조 기억장치(HDD)에 도움을 받아 해결을 한다. 이는 컴퓨터 혹은 운영체제에 의해서 제어되는데 현재 사용하는 메모리의 데이터를 DRAM에 올리고 사용하지 않는 메모리의 데이터를 보조 기억장치로 가상으로 큰 메모리 공간을 페이지 단위로 분할하여 제공한다. 현재 사용하지 않는 데이터의 물리적 주소는 보조 기억장치로 이동하는데 이는 GPGPU를 이용한 병렬 프로그래밍을 수행할 경우 두 번의 메모리 복사를 수행한다.
i) 페이징 단위 메모리 복사(HDD에서 DRAM)
ii) 병렬처리 할 데이터의 메모리 복사(DRAM에서 GDDR)
이러한 제약을 해결하기 위해 CUDA API의 고정된 메모리(Pined Memory)를 이용하여 성능을 향상시킬 수 있다.
일반적인 메모리 할당(일정 수준 이상 크기)을 할 경우 물리적 메모리 주소는 보조기억장치(하드디스크,HDD)에 할당이 되며, 접근을 할 때는 HDD에서 해당 데이터가 주기억장치(DRAM)으로 복사하여 접근을 한다. 고정된 메모리(Pined Memory)는 이를 방지하고 DRAM에 그대로 유지하도록 메모리 할당하는 방법이다. 고정된 메모리(Pined Memory)는 호스트 프로세서의 메모리, 즉, DRAM로 구성된다.
GDDR은 GPU에서 사용하는 메모리로서, DDR-DRAM이다. 글로벌 메모리는 GPU 프로그래밍 툴에서 사용하는 용어로 GDDR(물리적) 내에 할당되는 메모리이다.
고정된 메모리는 초기화 과정, 즉, 위 모든 단계를 하기 전에 메모리를 할당하고, 이 메모리를 각 단계에서 공유하여 사용한다.
또한, 함수에 따라 1차원(1D) 배열 혹은 2차원(2D) 배열로 처리하는 것이 유리할 경우가 있는데, 이를 위해서 1D 배열(혹은 2D배열)로 처리한 결과를 다음 함수를 위해 2D 배열(혹은 1D 배열)로 변형을 위해 변환을 위하여 메모리 복사를 할 경우 성능의 저하를 발생 시킨다.
도 9(a)는 1차원(1D) 배열의 메모리 할당한 경우 x,y 좌표에 해당하는 데이터를 접근할 때를 나타내었고, (b)는 1D배열을 2D 배열로 맵핑 후에 x,y 좌표에 해당하는 데이터를 접근할 때를 나타내었다. 2D 배열로 접근 할 때 2번의 메모리 접근이 필요하지만 같은 메모리에 접근 한다. 1D 배열에서 2D 배열로 그리고 다시 1D 배열로 처리해야 할 부분이 생길 경우 메모리 복사를 이용하면 총 4번의 메모리 접근이 필요하지만 주소 맵핑을 이용하면 2번의 메모리 접근으로 처리가 가능하다.
GPU에서 연산 처리를 할 경우 1차원 배열을 이용하여 처리하도록 구성된다. 이때 호스트 프로세서(CPU) 상에서 이전 연산들을 2차원 배열로 처리를 할 경우 이를 1차원 배열로 변환을 하기 위해 복사(Copy)를 하여야 한다. 이때 처음부터 1차원 배열을 생성하고 2차원 맵핑 방법을 이용하여 이전 연산을 처리하게 된다.
그래픽 프로세서를 이용하는 알고리즘, 즉, 전달량 연산 내에 양방향 필터에서 1차원을 사용하고, 나머지에서 2차원을 사용한다.
다음으로, 본 발명의 제1 실시예에 따른 카메라 영상의 연무 제거 처리를 위해 단일 그래픽 프로세서(GPGPU)를 이용하여 구현하는 방법을 도 10 내지 도 11을 참조하여 보다 구체적으로 설명한다.
도 10은 하나의 그래픽 프로세서(GPGPU)를 이용할 때 호스트 프로세서(CPU)(50)와 디바이스(GPGPU)(60)의 타이밍도를 나타내었다. GPGPU를 이용하기 위해서, 호스트 프로세서(50)에서 도 8의 표에서 S10 ~ S40 단계를 거쳐 나온 전달 량 데이터를 GPGPU 내의 글로벌 메모리(Global memory)로 데이터 복사를 한다.
복사된 전달량을 이용하여 양방향 필터(Bi-lateral Filter)를 이용하여 반복 정제 단계(S50,S51)를 디바이스(GPGPU)(60)에서 수행한다. 그리고 결과를 GPGPU 내의 글로벌 메모리로 저장한다.
글로벌 메모리에 저장된 결과를 다시 호스트로 데이터 복사를 한다. 그리고 단계 S60을 통하여 종료된다.
도 10에서 단계 S10 ~ S40을 전처리 과정(Pre-processing)으로 나타내었고 단계 S50을 양방향 필터(bi-lateral filter) 과정, 단계 S60을 후처리 과정(Post-processing)으로 나타내었다.
도 10의 구현 방법에서 호스트 프로세서(50)는 디바이스(60)의 연산이 종료되고 데이터 복사가 완료될 때까지 아무 동작을 하지 않고 기다려야 한다. 따라서 효율적이지 않다.
도 11에서 보는 바와 같이, 비동기 실행(Asynchronous Operation)을 통하여 디바이스 연산 중 다음 프레임에 전처리 과정(pre-processing)을 동시에 실행한다.
구체적으로, 첫 프레임의 디바이스 동작은 계산된 결과가 없기 때문에 동기화 시키지 않는다. 그리고 바로 두 번째 프레임의 전처리과정을 수행하고 이후 두 번째 프레임이 디바이스 동작을 수행하기 전에 동기화 하여 호스트 프로세서(50)로 데이터 복사를 한다. 이후 두 번째 프레임의 디바이스 동작을 수행하는 동안 첫 프레임의 후처리 과정과 세 번째 프레임의 전처리 과정을 호스트 프로세서(50)에서 수행한다.
이와 같이 비동기 실행을 통하여, 호스트 프로세서(50)에서 기다리는 시간을 줄일 수 있다.
다음으로, 본 발명의 제2 실시예에 따른 카메라 영상의 연무 제거 처리를 위해 다중 그래픽 프로세서(GPGPU)를 이용하여 구현하는 방법을 도 12 내지 도 13을 참조하여 보다 구체적으로 설명한다.
도 12는 다중 GPGPU를 이용하기 위해 구현 방법을 나타내었다. 다중 GPGPU를 이용하기 위하여, 앞에서 설명한 비동기 실행과정을 둘(kernel load, synchronous)로 나누었다.
또한 병렬 프로그래밍 툴(OpenMP 등)을 이용하여 호스트 프로세서(50)에서도 쓰레드 둘로 나누어 병렬 처리(멀티 프로세싱)를 수행하도록 하였다. 호스트 프로세서(50)의 첫 번째 쓰레드에서는 각 프레임의 전처리과정 후에 디바이스(60) 순서대로 데이터를 전송 및 비동기식 실행을 시작시킨다. 두 번째 쓰레드는 디바이스(60)의 순서대로 동기화 동작을 수행하며 기다린다. 그리고 동기화가 완료되면 후처리과정 후에 다음 디바이스의 동기화 동작을 수행한다.
도 13은 위 동작을 타이밍도로 나타내었다.
구체적으로, GPU 동작(메모리 복사 및 커널 실행 등)은 호스트 프로세서에 의한 GPU로의 명령어(instruction)만으로 수행된다. 이때, 명령어 버퍼에 저장(명령어 입력 또는 커널 로드 kernel load)시켜놓으면, 그래픽 프로세서가 해당 명령을 수행한다. 이때, 호스트 프로세서는 그래픽 프로세서의 수행 동작이 완료될 때까지 대기한다. 이를 동기화(Synchronous)과정이라 한다.
그런데 호스트 프로세서에서 하나의 쓰레드를 사용할 경우 동기화 과정이 명령어 입력 과정과 같이 수행되면서 명령어 입력을 할 수 있는 상태임에도 불구하고 동기화 과정으로 인해 기다림 상태가 발생한다. 즉, 효율이 떨어진다.
따라서 호스트 프로세서에서 명령어 입력과정(kernel load)과 동기화 과정을 두 개의 쓰레드로 각각 분리하여 실행시킨다. 명령어 입력 쪽의 쓰레드에서는 기다림 없이 계속 프로세싱을 할 수 있다. 따라서 명령어 입력 과정(kernel load)에 포함되어 있는 부분은 안개영상 입력부터 양방향 필터 전까지 해당하고, 동기화(synchronous)는 필터링과 안개제거된 영상 출력까지 해당한다.
한편, 한 프레임에서 정제 3회(또는 M회)가 수행된다. 즉, 정제과정은 반복되나, 순차적으로 처리되고, 병렬로 처리되지 않는다.
다음으로, 본 발명의 효과를 실험을 통해 설명한다.
실험에 사용한 시스템은 Intel i7-3770 CPU와 nVidia GTX 680 2대의 GPGPU를 이용하였다. 또한, 사용된 영상은 480x270크기의 영상을 이용하였다. 도 14에서 실험에 사용한 영상들을 보이고 있다. 도 14의 좌측영상이 원본영상, 우측영상들이 해무가 제거된 영상들이다.
하나의 디바이스로 구현하였을 때는 평균 140ms 소요되고, 비동기 실행을 추가하였을 경우 평균 81ms 소요되었으며, OpenMP와 다중 GPGPU를 이용하여 구현하였을 때 20ms 소요되었다.
이상, 본 발명자에 의해서 이루어진 발명을 상기 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 상기 실시 예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.
10 : 영상 50 : 호스트 프로세서
51 : 메인 메모리 60 : 디바이스

Claims (10)

  1. 호스트 프로세서와, 병렬처리가 가능한 그래픽 프로세서로 구성된 시스템에 의하여 수행되어, 입력영상에서 연무를 제거하는, 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법에 있어서,
    (a) 상기 입력영상에서 다크 채널을 추출하는 단계;
    (b) 추출한 다크 채널 중에서 가장 밝은 곳에 비해 밝기가 소정의 범위 이내를 가지는 픽셀의 값을 대기산란광으로 설정하는 단계;
    (c) 상기 입력영상의 각 컬러 채널의 값들을 상기 대기산란광 값으로 나누어서 영상을 정규화하고, 정규화된 영상에서 다크 채널을 재추출하는 단계;
    (d) 사전에 정해진 상수 값에서 재추출된 다크채널의 값을 차감하여 전달량을 구하되, 상기 전달량에 사전에 정해진 가중치를 곱하여 차감하는 단계;
    (e) 양방향 필터를 적용하여 전달량을 정제하고 반복하는 단계; 및,
    (f) 정제된 전달량을 이용하여 연무를 제거하여 상기 입력영상을 복원하는 단계를 포함하고,
    상기 (a)단계 내지 (d)단계, 및, (f)단계는 상기 호스트 프로세서에 의해 수행되고,
    상기 (e)단계는 상기 그래픽 프로세서에 의해 수행되고,
    상기 호스트 프로세서에서 상기 (a)단계 내지 (d)단계의 명령어 입력과정(kernel load)과, 상기 (e)단계 내지 (f)단계의 동기화 과정을 두 개의 쓰레드로 각각 분리하여 실행시키되, 상기 명령어 입력과정의 쓰레드에서는 기다림 없이 계속 프로세싱을 수행하고, 상기 동기화 과정은 필터링과 연무를 제거하여 입력영상을 복원하는 것을 수행하는 것을 특징으로 하는 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법.
  2. 제1항에 있어서,
    상기 호스트 프로세서는 상기 (a)단계 내지 (d)단계를 수행하여 구한 전달량을 상기 그래픽 프로세서의 글로벌 메모리로 복사하고,
    상기 그래픽 프로세서는 상기 전달량의 정제를 다수의 SP(스트리밍 프로세서)에 병렬로 처리하고, 계산된 결과를 상기 글로벌 메모리에 저장하고, 저장된 결과를 메인메모리로 복사하고,
    상기 호스트 프로세는 상기 메인메모리에 복사된 결과를 이용하여 상기 입력영상을 복원하는 것을 특징으로 하는 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법.
  3. 제2항에 있어서,
    상기 전달량은 다음 수식 1에 의해 구하는 것을 특징으로 하는 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법.
    [수식 1]
    Figure 112018059534368-pat00017

    단,
    Figure 112018059534368-pat00036
    는 전달량이고, x는 영상의 위치를 나타내고, w는 가중치이고, c는 색상 채널 인덱스이고, I는 입력영상을 나타내고, A는 대기산란광을 나타내고, Ω(x)는 x점을 중심으로 한 일정 구간을 나타냄.
  4. 제1항에 있어서,
    상기 (e)단계에서, 상기 전달량의 정제를 3회 반복하는 것을 특징으로 하는 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법.
  5. 제4항에 있어서,
    상기 (e)단계에서, 상기 양방향 필터에 의한 필터링은 다음 수식 3에 의해 계산되는 것을 특징으로 하는 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법.
    [수식 2]
    Figure 112017050285204-pat00018

    Figure 112017050285204-pat00019

    단, t(x)는 정제된 전달량이고,
    Figure 112017050285204-pat00020
    는 정제 직전의 전달량이고, I(x)는 x좌표의 밝기이고, fr(∥I(xi)-I(x)∥)는 가우시안(Gaussian) 함수로 xi와 x좌표의 밝기에 의한 커널이고, gs(∥xi-x∥)는 좌표에 의한 커널임.
  6. 제5항에 있어서,
    상기 그래픽 프로세서에 의해 양방향 필터의 연산이 수행되되, 양방향 필터의 밝기에 의한 커널 fr(∥I(xi)-I(x)∥)는 글로벌 메모리로 접근하여 계산되고, 좌표에 의한 커널인 gs(∥xi-x∥)는 최대 커널의 크기에 따라 LUT(Look-up table) 형태로 공유메모리를 이용하여 연산되는 것을 특징으로 하는 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법.
  7. 제6항에 있어서,
    상기 호스트 프로세서와 상기 그래픽 프로세서는 서로 비동기화하여 독립적으로 작업을 수행하고, 독립적인 동작이 종료된 후에 스트림 동기화를 통하여 상기 그래픽 프로세서에서 수행한 결과를 획득하되, 상기 호스트 프로세서에서 처리된 결과를 이용하여, 상기 그래픽 프로세서에서 양방향 필터링의 연산을 수행하고, 상기 그래픽 프로세서에서 양방향 필터링의 연산을 수행하는 동안, 상기 호스트 프로세서에서 상기 입력영상의 다음 프레임에 대하여 연산을 수행하는 것을 특징으로 하는 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법.
  8. 삭제
  9. 제3항에 있어서,
    상기 (f)단계에서, 다음 수식 2로 연무가 제거된 영상 J(x)를 구하는 것을 특징으로 하는 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법.
    [수식 3]
    Figure 112017050285204-pat00021

    단, t0는 사전에 정해지는 가중치 최소값임.
  10. 제1항 내지 제7항, 제9항 중 어느 한 항의 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법을 수행하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020170065089A 2017-05-26 2017-05-26 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법 KR101887043B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170065089A KR101887043B1 (ko) 2017-05-26 2017-05-26 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170065089A KR101887043B1 (ko) 2017-05-26 2017-05-26 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법

Publications (1)

Publication Number Publication Date
KR101887043B1 true KR101887043B1 (ko) 2018-08-09

Family

ID=63251226

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170065089A KR101887043B1 (ko) 2017-05-26 2017-05-26 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법

Country Status (1)

Country Link
KR (1) KR101887043B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102603322B1 (ko) 2022-07-14 2023-11-15 동아대학교 산학협력단 흐릿함 농도 평가기를 이용한 국부적 연무 제거 시스템 및 국부적 연무 제거 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120091550A (ko) * 2011-02-09 2012-08-20 주식회사 글로벌미디어테크 범용 그래픽 처리장치의 병렬 프로세서를 이용한 고속 영상 처리 장치 및 방법
KR101279374B1 (ko) 2012-11-27 2013-07-04 주식회사 카이넥스엠 카메라의 영상 개선을 위한 안개제거 영상 보정 장치 및 방법
KR101361644B1 (ko) 2012-08-01 2014-02-13 엠텍비젼 주식회사 영상 처리 장치 및 영상 내의 안개 제거 방법
KR20140095359A (ko) * 2013-01-24 2014-08-01 한남대학교 산학협력단 공유 메모리를 이용한 영상 처리 방법 및 장치
KR101705536B1 (ko) 2015-10-08 2017-02-10 목포해양대학교 산학협력단 카메라 영상기반 안개 제거 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120091550A (ko) * 2011-02-09 2012-08-20 주식회사 글로벌미디어테크 범용 그래픽 처리장치의 병렬 프로세서를 이용한 고속 영상 처리 장치 및 방법
KR101361644B1 (ko) 2012-08-01 2014-02-13 엠텍비젼 주식회사 영상 처리 장치 및 영상 내의 안개 제거 방법
KR101279374B1 (ko) 2012-11-27 2013-07-04 주식회사 카이넥스엠 카메라의 영상 개선을 위한 안개제거 영상 보정 장치 및 방법
KR20140095359A (ko) * 2013-01-24 2014-08-01 한남대학교 산학협력단 공유 메모리를 이용한 영상 처리 방법 및 장치
KR101705536B1 (ko) 2015-10-08 2017-02-10 목포해양대학교 산학협력단 카메라 영상기반 안개 제거 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
최운식. 연안항해 선박의 안전운항을 위한 영상기반 실시간 해무 제거 기술. 목포해양대학교 석사학위논문, 2016년 1월. pp. 1-46. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102603322B1 (ko) 2022-07-14 2023-11-15 동아대학교 산학협력단 흐릿함 농도 평가기를 이용한 국부적 연무 제거 시스템 및 국부적 연무 제거 방법

Similar Documents

Publication Publication Date Title
KR101705536B1 (ko) 카메라 영상기반 안개 제거 방법
CN110176054B (zh) 用于训练神经网络模型的合成图像的生成
US11113790B2 (en) Adding greater realism to a computer-generated image by smoothing jagged edges
US7737974B2 (en) Reallocation of spatial index traversal between processing elements in response to changes in ray tracing graphics workload
CN109145922A (zh) 一种自动抠图系统
US7564456B1 (en) Apparatus and method for raster tile coalescing
US20200234129A1 (en) Techniques for removing masks from pruned neural networks
CN110766778A (zh) 使用散列执行并行路径空间滤波来降低渲染期间的噪音
US11089320B2 (en) Adaptive pixel sampling order for temporally dense rendering
CN109508636A (zh) 车辆属性识别方法、装置、存储介质及电子设备
CN112041894B (zh) 渲染期间提高涉及水面的场景的真实感
CN114529658A (zh) 一种图形渲染方法及其相关设备
DE102019121200A1 (de) Bewegungsadaptives rendern mittels shading mit variabler rate
US10650577B2 (en) Graphics processing systems
KR101887043B1 (ko) 그래픽 프로세서를 이용한 병렬연산 기반 연무 제거 고속화 방법
CN113255537A (zh) 一种用于航行船舶识别的图像增强去噪方法
CN113506305B (zh) 三维点云数据的图像增强方法、语义分割方法及装置
RU2362210C1 (ru) Устройство выделения контуров объектов на изображении
KR101499124B1 (ko) 공유 메모리를 이용한 영상 처리 방법 및 장치
KR20150002187A (ko) Gaussian filtering 기반 영상의 안개제거 시스템 및 방법
CN105719258A (zh) 最小十字窗中值与均值迭代滤波的图像噪声滤除方法
CN113344765B (zh) 一种频域天文图像目标检测方法及系统
CN115424120A (zh) 一种驾驶员监控系统控制方法、装置及车辆
CN109286761B (zh) 用于抑制视频影像中的杂波的装置和方法
CN113705567A (zh) 船舶裂纹检测方法、系统、设备及计算机可读存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant