KR102405470B1 - 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법 및 초고속 병렬 연산프로그램을 기록한 컴퓨터로 읽을 수 있는 매체 - Google Patents

적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법 및 초고속 병렬 연산프로그램을 기록한 컴퓨터로 읽을 수 있는 매체 Download PDF

Info

Publication number
KR102405470B1
KR102405470B1 KR1020190166530A KR20190166530A KR102405470B1 KR 102405470 B1 KR102405470 B1 KR 102405470B1 KR 1020190166530 A KR1020190166530 A KR 1020190166530A KR 20190166530 A KR20190166530 A KR 20190166530A KR 102405470 B1 KR102405470 B1 KR 102405470B1
Authority
KR
South Korea
Prior art keywords
image
integral
integral image
horizontal
ultra
Prior art date
Application number
KR1020190166530A
Other languages
English (en)
Other versions
KR20210075453A (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 KR1020190166530A priority Critical patent/KR102405470B1/ko
Publication of KR20210075453A publication Critical patent/KR20210075453A/ko
Application granted granted Critical
Publication of KR102405470B1 publication Critical patent/KR102405470B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/2624Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects for obtaining an image which is composed of whole input images, e.g. splitscreen

Landscapes

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

Abstract

본 발명은 주어진 초고해상도 그레이레벨 영상(graylevel image)으로부터 적분영상(integral image)을 생성하고 이를 이용한 평균차이(Difference of Averages; DoA) 필터(filter)의 값으로 영상분할(image segmentation)한 삼진영상(trianry image)을 초고속으로 생성하는 병렬 연산 방법에 관한 것이다. 본 발명에 따른 적분영상 이용 영상분할을 위한 초고속 병렬 연산 방법은 주어진 입력영상으로부터 덧대기(padding) 영상과 그의 적분영상 동시 생성부; 적분영상의 계산 값을 이용하는 평균차이 필터부; 그리고 평균차이 필터부로부터 생성된 값들을 이용하여 영상분할된 삼진영상 생성부; 를 포함한다. 본 발명에 따른 하나의 실시예로 적분영상 기반 영상분할 방법을 멀티-코어 CPU를 탑재한 컴퓨터에서 소프트웨어로 구현하는 경우에 멀티-코어 CPU만으로도 충분히 실시간 구현이 가능하므로 추가 비용이 소요되는 멀티-GPU나 특별한 임베디드(embedded)를 이용하지 않아도 되는 효과가 있다. 그리고 적분영상을 이용하여 머신 비전 검사 장치(machine vision inspection system)의 필수 구성품인 카메라와 조명의 이상 유무를 판단하는 영상 질 평가(image quality assessment)에 활용할 수 있는 효과가 있다.

Description

적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법 및 초고속 병렬 연산프로그램을 기록한 컴퓨터로 읽을 수 있는 매체{Ultra-fast parallel computation method for integrated image based image segmentation and its media recording readable with computers thereof}
본 발명은 주어진 초고해상도 그레이레벨 영상으로부터 적분영상을 생성하고 이를 이용한 평균차이 필터의 값으로 영상분할하여 삼진영상을 초고속으로 생성하는 병렬 연산 방법과 초고속 병렬 연산프로그램을 기록한 컴퓨터로 읽을 수 있는 매체의 제공에 관한 것이다.
물체의 표면을 카메라 기반으로 검사하는 머신 비전(machine vision) 분야에서 종종 활용되는 국부(local) 평균차이 필터(difference of averages filter; DoA filter)를 이용하는 영상분할(image segmentation) 방법이 알려져 있다.
이 방법은 주어진 영상의 모든 화소 위치에서 그 위치를 중심으로 일정한 크기를 가지는 전경창(foreground window)과, 그 전경창보다 크기가 더 큰 배경창(background window) 내에서 각각 밝기값의 평균을 계산하고, 계산된 전경창과 배경창의 평균값 차이를 이용하여 영상분할 하는 것에 관한 것으로서 하기와 같은 방법으로 이루어진다.
주어진 그레이레벨 영상에서 임의의 한 화소 위치
Figure 112019128967489-pat00001
에서 그 밝기값을
Figure 112019128967489-pat00002
로 두고,
Figure 112019128967489-pat00003
의 수평과 수직의 화소 수는 각각
Figure 112019128967489-pat00004
Figure 112019128967489-pat00005
로 둔다. 여기에서
Figure 112019128967489-pat00006
이고
Figure 112019128967489-pat00007
이다.
Figure 112019128967489-pat00008
에서 평균 차이(difference of averages; DoA)
Figure 112019128967489-pat00009
는 배경창의 크기
Figure 112019128967489-pat00010
에 해당하는 화소들이 가지는 밝기의 평균값과 전경창의 크기
Figure 112019128967489-pat00011
에 해당하는 화소들이 가지는 밝기의 평균값 사이의 차이를 말하며, 다음과 같이 계산할 수 있다.
Figure 112019128967489-pat00012
(1)
여기서 수평 화소 좌표
Figure 112019128967489-pat00013
를 만족해야 하고, 수직 화소 좌표
Figure 112019128967489-pat00014
를 만족해야 한다.
식 (1)로부터 계산된
Figure 112019128967489-pat00015
를 이용하여 다음과 같이 최종적으로 영상 분할된 삼진영상(trinary image)
Figure 112019128967489-pat00016
를 생성할 수 있다.
Figure 112019128967489-pat00017
(2)
여기서
Figure 112019128967489-pat00018
Figure 112019128967489-pat00019
는 실수 값을 가지며, 실험적으로 결정하는 매개변수이다.
식 (1)을 입력 영상에 직접 적용한 계산량은 다음과 같이 된다.
덧셈 연산량은
Figure 112019128967489-pat00020
, 뺄셈 연산량은
Figure 112019128967489-pat00021
, 나눗셈은
Figure 112019128967489-pat00022
이다. 만약
Figure 112019128967489-pat00023
,
Figure 112019128967489-pat00024
,
Figure 112019128967489-pat00025
,
Figure 112019128967489-pat00026
인 경우에 덧셈은 대략적으로
Figure 112019128967489-pat00027
번이 될 것이다. 뺄셈은
Figure 112019128967489-pat00028
번이 되며, 나눗셈은
Figure 112019128967489-pat00029
번이 된다. 이와 같이 그 계산량이 매우 방대하여 실시간 처리가 요구되는 머신 비전 검사 장치에는 현실적으로 활용할 수 없게 된다.
머신 비전 검사 장치에 활용되는
Figure 112019128967489-pat00030
해상도를 가지는 상용 라인(line) 카메라는 초당
Figure 112019128967489-pat00031
개의 라인 영상을 생성하는 것이 일반적이다.
따라서
Figure 112019128967489-pat00032
화소를 가지는 영상은 약
Figure 112019128967489-pat00033
초 이내에 생성된다. 이 경우에 상기한 식 (1)과 식 (2)를 직접 구현하는 것은 실시간 머신 비전 검사 장치에는 적용하기에는 현실적으로 매우 부적합함을 알 수 있다.
입력 영상이
Figure 112019128967489-pat00034
의 해상도이고 전경창의 크기가
Figure 112019128967489-pat00035
이고 배경창이 크기가
Figure 112019128967489-pat00036
인 경우에 상품명 인텔 i5-4590 3.6GHz 쿼드 코어(quad core) CPU를 탑재한 컴퓨터의 운영체계를 상품명 마이크로소프트 윈도우 7 x64를 설치하고 상품명 비주얼 스튜디오 2015 환경에서 C++로 4개의 코어로 상기한 식(1)과 식 (2)를 구현한 경우에 그 수행시간은 약 192초였다.
만약 전경창과 배경창의 크기가 커지는 경우에는 그 수행시간이 더욱 늘어나게 됨은 당연하다. 전경창의 크기가
Figure 112019128967489-pat00037
이고 배경창의 크기가
Figure 112019128967489-pat00038
인 경우에서는 그 수행 시간이 1,430초였다.
머신 비전 검사 장치에서는 전경창과 배경창의 크기에 연동되지 않는 고정된 수행시간이 요구된다. 이를 위해서는 전경창과 배경창의 크기에 무관하게 동일한 계산량을 가지는 방법이 필요하다. 이 문제는 알려진 기술인 적분 영상[선행기술 해외논문 : 문헌 2, 3]을 이용하여 해결할 수도 있다.
적분영상은 크게 직렬 계산 방법[선행기술문헌 해외논문: 문헌 2, 3, 4, 국내특허 1]와 병렬 계산 방법으로 나눌 수 있다. 병렬 계산은 다시 멀티-코어 기반 알고리듬[선행기술문헌 해외논문: 문헌 5, 7], 멀티-GPU 기반 알고리듬[선행기술문헌 해외논문: 문헌 6], 임베디드(embedded) 구현[선행기술문헌 해외논문: 문헌 8, 9; 국내특허 1] 등으로 분류된다.
멀티-GPU 기반 알고리듬은 회사명 앤비다(NBIDIA)사 등의 멀티-GPU 탑재 그래픽 카드가 추가적으로 필요하며, 임베디드 구현은 별도의 하드웨어가 필요하다. 따라서 이들 방법은 머신 비전 검사 장치의 비용을 대폭 증가시키는 중요한 단점을 가지게 된다.
국내특허 001: 특허 10-1688435호, 블록 구조를 이용한 적분 영상 생성 장치 및 그 방법, 2016.
(문헌1) 해외논문 001: Crow, F., "Summed-area tables for texture mapping,"ACM SIGGRAPH Computer Graphics, pp. 207-212, 18, 1984. (문헌2) 해외논문 002: Viola P., Jones M., "Rapid Object Detection using a Boosted Cascade of Simple Features,"Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition, pp. 511-518, Kauai, HI, USA, December 8-14, 2001. (문헌3) 해외논문 003: Faisal Shafait, Daniel Keysers, Thomas M. Breuel, "Efficient implementation of local adaptive thresholding techniques using integral images,"Proc. SPIE 6815, Document Recognition and Retrieval XV, 681510, 28 January 2008. (문헌4) 해외논문 004: Branislav Kisaˇcanin, "Integral Image Optimizations for Embedded Vision Applications,"IEEE Southwest Symposium on Image Analysis and Interpretation, pp. 181-183, 24-26 March 2008. (문헌5) 해외논문 005: Zhang, N., "Working towards Efficient Parallel Computing of Integral Images on Multi-Core Processors,"Proceedings of the Second International Conference on Computer Engineering and Technology, pp. 30-34, Chengdu, China, 16-18, April 2010. (문한6) 해외논문 006: Berkin Bilgic, Berthold K.P. Horn, Ichiro Masaki, "Efficient Integral Image Computation on the GPU,"2010 IEEE Intelligent Vehicles Symposium, pp. 528-531, June 21-24, 2010. (문헌7) 해외논문 007: Wu Y. T., Cho C. Y., Tseng S. Y., Liu C. N., King C.T., "Parallel Integral Image Generation Algorithm on Multi-Core System,"Proceedings of the 9th IEEE International Symposium on Parallel and Distributed Processing with Applications, pp. 31-35, Busan, Korea, 26-28, May 2011. (문헌8) 해외논문 008: Peng Ouyang, Shouyi Yin, Yuchi Zhang, Leibo Liu, and Shaojun Wei, "A Fast Integral Image Computing Hardware Architecture With High Power and Area Efficiency,"IEEE Trans. on Circuits and Systems―II: Express Briefs, Vol. 62, No. 1, pp. 75-79, 2015. (문헌9) 해외논문 009: Shoaib Ehsan, Adrian F. Clark, Naveed ur Rehman and Klaus D. McDonald-Maier, "Integral Images: Efficient Algorithms for Their Computation and Storage in Resource-Constrained Embedded Vision Systems,"Sensors, pp. 16804-16830, 15, 2015. (문헌10) 국내특허 001: 특허 10-1688435호, 블록 구조를 이용한 적분 영상 생성 장치 및 그 방법, 2016.
본 발명에서 해결하고자 하는 과제는, 상기한 식 (1)과 식 (2)를 전경창과 배경창의 크기와는 무관하게 초고속으로 병렬 연산하는 새로운 방법의 제공과 그 연산 방법을 기록한 컴퓨터로 읽을 수 있는 매체의 체공에 관한 것이다.
상기 과제를 해결하기 위해, 본 발명에 따른 적분영상 이용 영상분할을 위한 초고속 병렬 연산 방법은 주어진 입력영상으로부터 덧대기(padding) 영상과 그의 적분영상 동시 생성부; 및 적분영상의 계산 값을 이용하는 평균차이 필터부; 그리고 평균차이 필터부로부터 생성된 값들을 이용하여 영상분할된 삼진영상 생성부; 를 포함한다.
여기에서, 상기 초고속 병렬 연산 방법의 한 실시예로 멀티-코어 CPU를 탑재한 컴퓨터에서 SIMD 어셈블리어와 openMP 명령어를 이용하는 소프트웨어 구현 방법을 포함할 수 있다.
또한, 상기 덧대기 영상과 그의 적분영상 동시 생성부는 평균차이 필터를 연산하는데 필요한 전경창과 배경창의 크기와 덧대기 영상(padding image)의 생성 방법인 0-덧대기(zero-padding)나 거울 덧대기(mirror-padding) 방법을 고려하는 것이 포함될 수 있다.
나아가 여기에서, 상기 덧대기 영상의 크기는 입력 영상의 크기, 배경창의 최대 크기, 그리고 멀티-코어 CPU의 벡터 레지스터(vector register) 크기를 고려해서 결정하는 방법을 포함할 수 있다.
또한, 상기 덧대기 영상과 그의 적분영상을 동시에 생성하기 위해서 덧대기 영상을 멀티-코어 CPU의 코어 수만큼 수직 또는 수평 방향으로 균등하게 나누어 각각의 코어에 할당하여 각 코어의 로드(load)가 균등하게 되도록 병렬 연산하는 방법을 포함할 수 있다. 이 경우에 각 코어에 할당된 적분영상의 최대값이 정수형 데이터의 범위를 초과하지 않도록 수직 또는 수평 방향으로 나누어질 영상의 크기를 고려하는 방법을 포함할 수 있다.
여기에서, 상기 덧대기 영상과 그의 적분영상 동시 생성부 이후에 생성된 적분영상을 이용하는 평균차이 필터부는 전경창과 배경창의 크기와 무관하게 그 연산 과정의 실행 속도가 거의 동일하게 유지되도록 하는 방법들 가운데에서 하나의 실시예로 멀티-코어 CPU의 벡터 레지스터의 크기와 멀티-코어 CPU 기반 병렬 연산의 로드 밸런스(load balance)가 맞추어지도록 코어의 수만큼 적분영상의 크기를 수직 또는 수평 방향으로 균등하게 나누는 방법을 포함할 수 있다.
상기 평균차이 필터부 이후에 생성되는 평균차이 값들로부터 삼진영상을 생성하는데 문턱값(threshold value) 기반 영상분할 방법 등을 포함할 수도 있다. 그리고 상기한 평균처리 필터부와 유사하게 전경창과 배경창의 크기와 무관하게 그 연산 과정의 실행 속도가 거의 동일하게 유지되도록 하는 방법들 가운데에서 하나의 실시예로 멀티-코어 CPU의 벡터 레지스터의 크기와 병렬 연산의 로드 밸런스(load balance)가 맞추어지도록 코어의 수만큼 적분영상의 크기를 수직 또는 수평 방향으로 균등하게 나누는 방법을 포함할 수 있다.
본 발명에 따르면, 주어진 초고해상도 그레이레벨 영상으로부터 덧대기와 적분영상을 동시에 생성하고, 생성된 적분영상에서 평균차이 필터로 계산한 평균차이 값으로부터 영상분할된 삼진영상을 초고속으로 생성하는 병렬 연산 방법에서 하나의 실시예로 멀티-코어 CPU를 탑재한 컴퓨터에서 소프트웨어로 구현하는 경우에 충분히 실시간 구현이 가능하므로 추가 비용이 소요되는 멀티-GPU나 특별한 임베디드를 이용하지 않아도 되므로 전체 시스템의 비용을 대폭 저감시키는 산업상의 효과가 있다.
나아가 본 발명에 따르면, 적분영상에서 특정한 수평 영역 또는 수직 영역이나 하나의 수평선 또는 수직선에 위치한 밝기값의 평균값이 다른 특정 수평 영역 또는 수직 영역이나 하나의 수평선 또는 수직선에 위치한 밝기값의 평균값보다 현저히 낮으면 그 영역이나 선에 해당하는 카메라 센서 소자나 조명의 고장으로 판단한다.
이를 활용하면 카메라나 조명 장치의 유지 보수에 활용할 수 있을 뿐만 아니라 제품의 표면을 검사하기 이전의 카메라나 조명의 이상 여부 등을 판단할 수 있게 되어 전체 시스템에 의한 영상 질의 평가에 활용할 수 있는 부수적인 효과가 있다.
도 1은 본 발명에 따른 적분영상 기반 삼진영상 생성 방법의 설명을 위한 플로우차트.
도 2는 입력영상과 덧대기 영상의 수평과 수직 크기를 나타내는 참고설명도.
도 3은 수평 적분영상 생성 방법을 설명하기 위한 플로우차트.
도 4는 정수 변환 방법을 설명하기 위한 플로우차트.
도 5는 이동합산을 설명하기 위한 플로우차트.
도 6은 혼합합산을 설명하기 위한 플로우차트.
도 7은 수평방향으로 거울 덧대기와 그의 적분영상이 생성된 영역을 나타내기 위한 설명도.
도 8은 평균차이 필터로부터 삼진 영상 생성 방법을 설명하기 위한 플로우차트이다.
이하, 본 발명의 바람직한 한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소들에 참조 부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 동일한 부호를 부하고 있다.
본 발명을 설명함에 있어, 기히 공지, 공용의 기술에 대한 구체적인 상세한 설명은 생략한다. 또한, 이하에서 본 발명의 바람직한 실시예를 통하여 설명하고 있으나,
본 발명의 기술적 사상은 이에 한정하거나 제한되지 않고 당업자에 의해 변형되어 다양하게 실시될 수 있음은 물론이다.
본 발명에 따른 덧대기 영상과 그의 적분영상 동시 생성부, 평균차이 필터부, 삼진영상 생성부는 그 모든 구성요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있고 또는 각 구성요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다.
또한 본 발명에 따른 덧대기 영상과 그의 적분영상 동시 생성부, 평균차이 필터부, 삼진영상 생성부는 소프트웨어 프로그램으로 구현되어 프로세서 또는 신호 처리 모듈 위에서 동작할 수 있고, 또는 하드웨어의 형태로 구현되어 칩(Chip), 소자 등이 될 수 있음은 물론이다.
또한 이와 같은 본 발명에 따른 덧대기 영상과 그의 적분영상 동시 생성부, 평균차이 필터부, 삼진영상 생성부는 영상을 획득 또는 입력받고 이를 처리하는 디바이스, 하드웨어, 소프트웨어 모듈에 포함되어 동작할 수 있다.
예를 들면 본 발명에 따른 덧대기 영상과 그의 적분영상 동시 생성부, 평균차이 필터부, 삼진영상 생성부는 영역(area)이나 라인(line) 카메라 및 그의 모듈, 컴퓨터, 각종 영상 인식검출처리 장치에 하드웨어 또는 소프트웨어의 형태로 포함되어 동작하거나, 이들 장치와 연동하여 동작하는 하드웨어 또는 소프트웨어 상에서 동작할 수 있다.
도 1은 본 발명에 따른 적분영상 기반 삼진영상 생성 방법의 플로우차트(1000)를 나타내는 설명도이다.
입력영상
Figure 112019128967489-pat00039
으로부터 영 또는 거울 덧대기의 적분영상을 생성부(2000)에서 생성한다. 이 적분영상에 평균차이 필터부(3000)를 적용하여 영상 분할된 삼진 영상
Figure 112019128967489-pat00040
또는 영상 질 평가에 필요한 매개변수들을 계산부(4000)에서 계산한다.
본 발명에 다른 평균차이 필터를 그 전경창과 배경창의 크기와 무관하게 초고속 병렬 연산하기 위해서는 덧대기 영상과 그의 적분영상의 동시 생성부(2000)에서 생성되는 적분영상을 이용하게 된다.
본 발명에 따른 평균차이 필터의 전경창과 배경창의 크기는 임의의 크기를 가지는 사각 형태로 한다.
이 경우에
Figure 112019128967489-pat00041
,
Figure 112019128967489-pat00042
,
Figure 112019128967489-pat00043
,
Figure 112019128967489-pat00044
가 된다. 그리고
Figure 112019128967489-pat00045
Figure 112019128967489-pat00046
이다.
여기서
Figure 112019128967489-pat00047
Figure 112019128967489-pat00048
그리고
Figure 112019128967489-pat00049
Figure 112019128967489-pat00050
는 홀수이다. 예를 들어서
Figure 112019128967489-pat00051
Figure 112019128967489-pat00052
이면 배경창의 최대 크기는
Figure 112019128967489-pat00053
가 되고 이 경우에 전경창의 최대 크기는
Figure 112019128967489-pat00054
이 되어야 한다. 이와 같이
Figure 112019128967489-pat00055
Figure 112019128967489-pat00056
를 결정하면 임의의 사각 형태를 가지는 배경창과 전경창들의 크기를 결정할 수 있게 되는 것이다.
식 (1)에 나타낸
Figure 112019128967489-pat00057
를 수평 화소 좌표들의 범위가 각각
Figure 112019128967489-pat00058
Figure 112019128967489-pat00059
, 그리고 수직 화소 좌표들의 범위가
Figure 112019128967489-pat00060
Figure 112019128967489-pat00061
에서도 계산할 수 있도록 한다.
이를 위해서는 주어진 입력 영상의 크기를 확장하는 덧대기(padding)가 필요하다. 일반적으로 덧대기는 영으로 확장하는 영 덧대기(zero-padding)와 입력 영상의 화소 값을 거울 대칭으로 확장하는 거울 덧대기(mirror-padding)로 분류된다. 본 발명에 따른 덧대기 영상에서는 영 덧대기 또는 거울 덧대기 모두 적용할 수 있는 방법을 제공한다.
덧대기 영상의 크기는 입력 영상의 크기, 코어의 총 수, 벡터 레지스터의 크기, 그리고 전경창과 배경창의 최대 크기를 고려하여 결정할 수 있다. 입력 영상의 수평 크기
Figure 112019128967489-pat00062
와 수직 크기
Figure 112019128967489-pat00063
, 그리고 코어의 총 수
Figure 112019128967489-pat00064
과 벡터 레지스터의 크기
Figure 112019128967489-pat00065
를 활용한다. 여기에서
Figure 112019128967489-pat00066
Figure 112019128967489-pat00067
는 멀티-코어 또는 멀티-쓰레드(multi-thread) 컴퓨팅 환경에서 각 코어나 쓰레드의 로드 균형(load balance)을 고려하기 위해서 필요한 매개변수로 사용할 수 있다.
도 2는 입력영상과 덧대기 영상의 수평과 수직 크기를 나타내는 설명도로서 도 2를 참조하면 덧대기의 수평과 수직 크기는 각각
Figure 112019128967489-pat00068
Figure 112019128967489-pat00069
이다.
따라서 덧대기 한 영상의 수평 크기
Figure 112019128967489-pat00070
과 수직 크기
Figure 112019128967489-pat00071
는 각각
Figure 112019128967489-pat00072
Figure 112019128967489-pat00073
가 된다. 이 경우에 덧대기 수평 크기
Figure 112019128967489-pat00074
와 수직 크기
Figure 112019128967489-pat00075
는 다음과 같이 표현될 수 있다.
Figure 112019128967489-pat00076
(3.1)
Figure 112019128967489-pat00077
(3.2)
Figure 112019128967489-pat00078
(3.3)
여기서
Figure 112019128967489-pat00079
는 최하한경계값(greatest lower bound)의 약자이며,
Figure 112019128967489-pat00080
Figure 112019128967489-pat00081
의 몫을 계산하는 연산자이다. 그리고
Figure 112019128967489-pat00082
인 정수이다.
거울 덧대기 한 영상
Figure 112019128967489-pat00083
또는 영 덧대기 한 영상
Figure 112019128967489-pat00084
로부터 적분 영상
Figure 112019128967489-pat00085
은 다음과 같이 생성할 수 있다.
Figure 112019128967489-pat00086
(4)
상기한 식 (4)에 나타낸 적분영상은 입력영상
Figure 112019128967489-pat00087
로부터 덧대기 영상
Figure 112019128967489-pat00088
또는
Figure 112019128967489-pat00089
를 생성하면서 동시에
Figure 112019128967489-pat00090
또는
Figure 112019128967489-pat00091
로부터 생성할 수 있다.
덧대기 영상
Figure 112019128967489-pat00092
또는
Figure 112019128967489-pat00093
와 적분 영상
Figure 112019128967489-pat00094
는 수직 또는 수평 방향으로 분할하여 병렬 연산할 수 있다. 여기에서, 적분 영상의 최대값이 4바이트(byte) 부호 없는 정수(integer) 데이터의 범위를 초과하지 않도록 분할되는 영상의 크기를 고려한다.
입력영상의 각 화소(pixel)는 0부터 255까지의 밝기값을 가지는데 이는 1바이트(byte) 부호 없는(unsigned) 수로 표현 가능하다. 거울 덧대기를 한 적분영상에서 한 화소가 가질 수 있는 최대값은
Figure 112019128967489-pat00095
이다.
만약,
Figure 112019128967489-pat00096
인 경우에
Figure 112019128967489-pat00097
이 되어 5바이트 정수를 필요로 한다. 이는 4바이트 정수로 표현할 수 없고 4바이트 단정도(single-precision) 실수(float)로 표현 가능하다. 따라서 입력 영상의 1바이트 부호 없는 정수인 밝기값을 4바이트 단정도 실수로 변환해야 하는데, 이 경우에 연산의 정확도는 보장되지 않는다.
예를 들어 4바이트 단정도 실수의 값이 2,147,352,128.0인 경우에 다른 4바이트 단정도 실수의 값인 270,752.0을 더하는 연산을 수행하면 2,147,622,880.0이 되어야 하나 그 결과는 2,147,563,008이 된다. 이 문제를 해결하기 위해서 8바이트 배정도(double-precision) 실수로 변환하는 경우에 그 저장 공간은 2배가 더 소요된다.
본 발명에 따른 하나의 실시예로 멀티-코어 CPU 탑재 컴퓨터에서 소프트웨어로 구현하는 경우에 저장 공간을 줄이기 위해서 적분영상의 최대값이 4바이트 정수가 가지는 범위 이내가 되도록 멀티-코어의 캐쉬(cache) 크기를 고려하여 덧대기 영상을 수직 또는 수평으로 균등하게 분할하는 방법을 채택할 수 있다.
입력영상
Figure 112019128967489-pat00098
에서 임의의 수평선상에서 거울 덧대기 영상
Figure 112019128967489-pat00099
와 영 덧대기 영상
Figure 112019128967489-pat00100
는 다음과 같이 생성할 수 있다.
Figure 112019128967489-pat00101
(5.1)
Figure 112019128967489-pat00102
(5.2)
여기서
Figure 112019128967489-pat00103
이다.
그리고
Figure 112019128967489-pat00104
는 1 바이트(Byte) 부호 없는 char(unsigned char) 데이터를 4바이트 정수 데이터로 변환하는 연산자이다.
식 (5)에서 계산된
Figure 112019128967489-pat00105
또는
Figure 112019128967489-pat00106
로부터 임의의 수평선상의 적분영상은 각각,
Figure 112019128967489-pat00107
(6.1)
Figure 112019128967489-pat00108
(6.2)
로 주어진다.
수직 방향으로 거울 덧대기 영상
Figure 112019128967489-pat00109
와 영 덧대기 영상
Figure 112019128967489-pat00110
는 각각 식 (6.1)과 식 (6.2)를 이용하여 다음과 같이 생성할 수 있다.
Figure 112019128967489-pat00111
(7.1)
Figure 112019128967489-pat00112
(7.2)
여기서
Figure 112019128967489-pat00113
이다.
식 (5), 식 (6), 그리고 식 (7)을 통해서 동시 생성된 거울 덧대기와 영 덧대기 한 영상의 적분 영상은 각각,
Figure 112019128967489-pat00114
(8.1)
Figure 112019128967489-pat00115
(8.2)
로 주어진다.
여기에서, 상기한 식 (5)의
Figure 112019128967489-pat00116
Figure 112019128967489-pat00117
, 식 (6)의
Figure 112019128967489-pat00118
Figure 112019128967489-pat00119
, 식 (7)의
Figure 112019128967489-pat00120
Figure 112019128967489-pat00121
는 식 (8)의
Figure 112019128967489-pat00122
와 동일한 메모리 공간을 가지나 편의상 서로 다르게 표현하고 있다.
본 발명에 따른 평균차이 필터를 그 전경창과 배경창의 크기와 무관하게 초고속 병렬 연산하기 위해서는 덧대기 영상과 그의 적분영상 동시 생성(2000)을 상기한 식 (5), 식 (6), 식 (7), 그리고 식 (8)을 이용하여 구현한다.
본 발명에 따른 덧대기 영상은 영 또는 거울 덧대기 영상 모두에 적용할 수 있는 방법이다. 여기서는 거울 덧대기 영상에 대해서만 기술한다.
[수평방향 거울 덧대기 영상과 그의 적분영상 동시 생성부]
상기 식 (5.1)에 나타낸 수평 방향으로 거울 덧대기 한 영상과 그의 적분영상 동시 생성인 상기 식 (6.1)에 나타낸 수평 방향 적분영상의 생성은 다음과 같이 구현할 수 있다.
(H.0) 초기화: 입력영상의 크기
Figure 112019128967489-pat00123
와 배경창의 최대 크기
Figure 112019128967489-pat00124
가 주어지면 덧대기의 수평과 수직 크기인
Figure 112019128967489-pat00125
Figure 112019128967489-pat00126
를 상기 식 (3)을 통해서 계산한다.
입력영상
Figure 112019128967489-pat00127
를 수직으로 코어나 쓰레드 수
Figure 112019128967489-pat00128
Figure 112019128967489-pat00129
만큼 균등하게 분할하면 각 영역의 크기는
Figure 112019128967489-pat00130
이 된다. 여기서
Figure 112019128967489-pat00131
로 두면,
Figure 112019128967489-pat00132
인 경우에
Figure 112019128967489-pat00133
이 된다.
이 경우에
Figure 112019128967489-pat00134
까지의 코어나 쓰레드는
Figure 112019128967489-pat00135
의 동일한 영상의 크기가 할당되지만
Figure 112019128967489-pat00136
번째 코어나 쓰레드에 할당되는 영상의 크기는
Figure 112019128967489-pat00137
이 된다.
멀티 코어 또는 멀티 쓰레드 환경에서 각 코어의 계산량을 동일하게 맞추어 주는 것이 계산 시간을 단축시키게 된다. 이를 일반적으로 로드 밸런스(load balance)라고 한다.
이를 위해서
Figure 112019128967489-pat00138
번째 코어나 쓰레드에 할당되는 영상의 크기를
Figure 112019128967489-pat00139
로 맞추어 주기 위해서
Figure 112019128967489-pat00140
번째 코어나 쓰레드에 할당된 영상의 끝
Figure 112019128967489-pat00141
개 수평선을
Figure 112019128967489-pat00142
번째 코어나 쓰레드에 할당된 영역과 중복(overlap)시킨다. 이와 같이 서로 다른 영역들의 일부 영역들이 서로 중복이 되도록 하여 서로 다른 영역들이 동일한 면적을 가지도록 한다.
수직 방향으로 균등하게 분할된
Figure 112019128967489-pat00143
크기를 가진 영상을
Figure 112019128967489-pat00144
로 둔다. 여기서
Figure 112019128967489-pat00145
이며,
Figure 112019128967489-pat00146
이다.
서로 다른
Figure 112019128967489-pat00147
를 서로 다른 코어 또는 쓰레드에 할당하여 동시에 포크-조인(fork-join)방식의 병렬 연산을 하도록 한다.
여기에서 물리적으로 서로 다른 영역을 서로 다른 코어나 쓰레드가 담당하기 때문에 동일한 메모리의 영역을 동시에 읽고 쓸 때에 서로 다른 코어나 쓰레드는 서로 충돌하지 않고 독립적으로 동작하도록 하는 것이다. 따라서 서로 다른 코어나 쓰레드가 동일한 주소를 가지는 메모리를 읽고 쓸 때의 충돌을 방지하기 위한 고려를 할 필요성이 없게 되고, 또한 로드 밸런스를 맞추어 주기 때문에 서로 다른 코어나 쓰레드 사이의 연산 처리 속도가 일정하게 유지될 수 있게 된다.
각 영역에 할당된 코어는 SIMD와 openMP 명령어로 다수의 데이터를 동시에 처리할 수 있다.
영상
Figure 112019128967489-pat00148
에 해당하는 그의 거울 덧대기 영상은 상기 식 (5.1)에 나타낸
Figure 112019128967489-pat00149
에서
Figure 112019128967489-pat00150
를 만족하는
Figure 112019128967489-pat00151
로 표기한다. 그리고
Figure 112019128967489-pat00152
에 해당하는 수평 적분영상은 상기 식 (6.1)에 나타낸 수평 적분영상
Figure 112019128967489-pat00153
에서
Figure 112019128967489-pat00154
를 만족하는
Figure 112019128967489-pat00155
로 표기한다.
영상
Figure 112019128967489-pat00156
에서 하나의 수평선상에 포함된 화소들의 집합을 총 5개의 부분 집합
Figure 112019128967489-pat00157
로 나눈다. 여기에서
Figure 112019128967489-pat00158
의 각 부분 집합들에 대해서 상기한 식 (5.1)과 식 (6.1)을 구현하는 상세한 방법은 다음의 (H.1)부터 (H.7)까지의 과정으로 구성된다.
(H.1)
Figure 112019128967489-pat00159
인 경우:
(H.1.0) 입력 영상
Figure 112019128967489-pat00160
를 1바이트 부호 없는 정수를 영 확장 더블 워드(double word) 정수로 변환하면서 읽는다.
Figure 112019128967489-pat00161
가 된다.
(H.1.2) 해당 위치의 수평 적분영상에
Figure 112019128967489-pat00162
를 쓴다.
(H.1.3)
Figure 112019128967489-pat00163
을 벡터 레지스터를 이용하여 방송(broadcast)한다. 여기에서 방송이란 특정 벡터 레지스터의 모든 요소들을 동일한 값으로 두는 것을 의미하고 있으며 이는
Figure 112019128967489-pat00164
을 의미한다.
(H.2)
Figure 112019128967489-pat00165
인 경우:
(H.2.0)
Figure 112019128967489-pat00166
로 다시 그 부분 집합을 균등 분할한다. 여기에서
Figure 112019128967489-pat00167
로 두면,
Figure 112019128967489-pat00168
가 된다.
균등 분할된 부분 집합의 수를
Figure 112019128967489-pat00169
로 두면
Figure 112019128967489-pat00170
Figure 112019128967489-pat00171
인 경우에는
Figure 112019128967489-pat00172
가 되며, 그렇지 않으면
Figure 112019128967489-pat00173
이 된다.
만약
Figure 112019128967489-pat00174
인 경우에
Figure 112019128967489-pat00175
개의 부분 집합은 그 원소의 수가
Figure 112019128967489-pat00176
이나 마지막 하나의 부분 집합은 그 원소의 수가
Figure 112019128967489-pat00177
부터
Figure 112019128967489-pat00178
까지가 된다. 여기서
Figure 112019128967489-pat00179
인 경우에는 상기한 (H.1.0)부터 (H.1.2)까지와 동일한 방법을 이용한다.
(H.2.1) 상기한 (H.2.0)의 부분 집합에 해당하는 입력 영상의 화소들을 벡터 레지스터로 읽는다. 이 경우에 읽는 순서는
Figure 112019128967489-pat00180
번째로 한다.
만약
Figure 112019128967489-pat00181
인 경우에서는
Figure 112019128967489-pat00182
번째 부분 집합에서 원소의 수가
Figure 112019128967489-pat00183
가 되도록
Figure 112019128967489-pat00184
번째 부분 집합의 끝 원소들과 중복시켜서 읽는다. 그리고 중복된 원소들이 영의 값을 가지도록 적절한 처리를 한다.
도 3은 수평 적분영상 생성 방법을 설명하기 위한 참고도이다.
(H.2.2) 상기한 (H.2.1)에서 처리된 데이터는 도 3에 나타낸 정수 변환부(2200)로 입력된다. 이는 1바이트 부호 없는 정수를 4바이트 정수로 변환한다.
상기한 (H.2.1)에서 읽은 부분 집합의 데이터는 벡터 형식으로
Figure 112019128967489-pat00185
로 편의상 바꾸어 쓴다. 이 경우에
Figure 112019128967489-pat00186
의 크기는 벡터 레지스터의 크기와 같다.
도 4는 정수 변환(2100) 방법을 설명하기 위한 참고도이다.
도 4에 나타낸 치환(2210)은,
Figure 112019128967489-pat00187
(10)
를 의미한다. 여기서
Figure 112019128967489-pat00188
이며,
Figure 112019128967489-pat00189
는 1바이트 부호 없는 정수를 나타낸다. 그리고
Figure 112019128967489-pat00190
에서
Figure 112019128967489-pat00191
은 임의의 벡터 레지스터를 의미하는 인덱스(index)이다. 이 인덱스가 다르면 서로 다른 벡터 레지스터를 나타낸다.
도 4에 나타낸 풀기(unpacking)1(2220)에서는 치환된 1바이트 부호 없는 정수를 2바이트 부호 없는 정수로 바꾼다. 이는 데이터가 2배로 늘어나기 때문에 다른 벡터 레지스터 1개가 추가적으로 필요하다. 따라서 상기 식 (10)에 나타낸 벡터 레지스터가 풀기1(2220)을 통과하게 되면,
Figure 112019128967489-pat00192
(11.1)
Figure 112019128967489-pat00193
(11.2)
이 된다. 여기서
Figure 112019128967489-pat00194
는 2 바이트 부호 없는 정수인 워드(word)형 데이터를 나타낸다.
도 4에 나타낸 풀기2(2230)는 2바이트 부호 없는 정수를 4바이트 부호 없는 정수로 바꾼다. 이는 데이터가 2배로 늘어나기 때문에 다른 벡터 레지스터 2개가 추가적으로 필요하다. 식 (11.1)과 식 (11.2)에 나타낸 2바이트 부호 없는 정수는,
Figure 112019128967489-pat00195
(12.1)
Figure 112019128967489-pat00196
(12.2)
Figure 112019128967489-pat00197
(12.3)
Figure 112019128967489-pat00198
(12.4)
에 따라서 4바이트 부호 없는 정수로 변환된다. 여기서
Figure 112019128967489-pat00199
는 4바이트 더블 워드 데이터임을 나타낸다.
여기서, 편의상
Figure 112019128967489-pat00200
로 두자.
Figure 112019128967489-pat00201
(13.1)
Figure 112019128967489-pat00202
(13.2)
Figure 112019128967489-pat00203
(13.3)
Figure 112019128967489-pat00204
(13.4)
(H.2.3) 상기 식 (13)은 거울 덧대기 영역인
Figure 112019128967489-pat00205
과 거울 덧대기 영역이 아닌
Figure 112019128967489-pat00206
에서도 이용되어야 한다. 이를 위해서 상기 식 (13)에 나타낸 데이터들을 다른 레지스터 또는 메모리에 복사하거나 저장해둔다.
거울 덧대기 영역인
Figure 112019128967489-pat00207
에서는 상기한 식 (13)에 나타낸 벡터 레지스터 요소들의 위치를 역배열(reverse ordering)해야 한다.
이는
Figure 112019128967489-pat00208
를 의미하며, 다른 레지스터들도 마찬가지이다.
도 5는 이동합산(2300)을 설명하기 위한 참고도이다.
(H.2.4) 상기한 식 (13)에서 역배열된 데이터를 가지는 벡터 레지스터
Figure 112019128967489-pat00209
들은 도 5에 나타낸 이동합산(2300)으로 입력된다.
도 5에 나타낸
Figure 112019128967489-pat00210
Figure 112019128967489-pat00211
은 입력데이터를 왼쪽으로 각각 4와 8바이트 이동시키는 것을 의미한다. 그리고 ∑는 합을 의미하고
Figure 112019128967489-pat00212
Figure 112019128967489-pat00213
은 각각 4와 8바이트 이동시키는 데에 소요되는 시간만큼 지연시키는 것을 의미한다.
식 (13.1)에 나타낸
Figure 112019128967489-pat00214
Figure 112019128967489-pat00215
Figure 112019128967489-pat00216
를 각각 지나서 ∑에서 합해지면 그 결과는 다음과 같다.
Figure 112019128967489-pat00217
(14.1)
만약
Figure 112019128967489-pat00218
이거나
Figure 112019128967489-pat00219
인 경우에서는
Figure 112019128967489-pat00220
이 된다. 만약
Figure 112019128967489-pat00221
이면
Figure 112019128967489-pat00222
는 다시
Figure 112019128967489-pat00223
Figure 112019128967489-pat00224
를 각각 지나서 ∑에서 합해지면 그 결과는 다음과 같다.
Figure 112019128967489-pat00225
(14.2)
그리고
Figure 112019128967489-pat00226
가 된다.
만약
Figure 112019128967489-pat00227
또는 그 이상인 경우에서는 도 5에서 명시적으로 나타내지 않았지만 추가적으로
Figure 112019128967489-pat00228
,
Figure 112019128967489-pat00229
, ∑ 등과 조건판단부들이 도 5에 나타낸 구조로 반복된다.
도 6은 혼합합산(2400)을 설명하기 위한 참고도이다.
(H.2.5) 이동합산(2300)을 통과한 데이터는 도 6에 나타낸 혼합합산(2400)으로 입력된다.
도 6에서 만약
Figure 112019128967489-pat00230
이면 치환, 혼합, ∑를 통과하지 않고 바로 ∑, 방송,
Figure 112019128967489-pat00231
로 입력된다. 여기서
Figure 112019128967489-pat00232
는 실수변환(2200)과 이동합산(2300)을 수행하는 데에 소요되는 시간만큼 지연시킨다는 의미이다. 이
Figure 112019128967489-pat00233
를 통과한 데이터는 이전에 계산된 수평 적분 데이터
Figure 112019128967489-pat00234
을 의미한다. 따라서 최종적으로 수평 적분 데이터
Figure 112019128967489-pat00235
가 된다.
도 6에서 만약
Figure 112019128967489-pat00236
등인 경우에
Figure 112019128967489-pat00237
는 실수변환(2200)과 이동합산(2300)을 수행하는 데에 소요되는 시간에
Figure 112019128967489-pat00238
를 더한 시간만큼 지연시킨다는 의미이다. 이 경우에는 정상적으로 모든 과정을 거쳐서 최종 결과인 수평방행 적분영상 데이터를 생성하게 된다.
도 6에 나타낸 치환과 혼합 과정을 수행하면 식 (14.2)에 나타낸
Figure 112019128967489-pat00239
는 다음과 같이 변환된다.
Figure 112019128967489-pat00240
(15.1)
도 6에 나타낸 ∑ 과정까지 수행하면,
Figure 112019128967489-pat00241
(15.2)
이 된다.
그리고 이전 수평 적분 데이터
Figure 112019128967489-pat00242
과 ∑ 과정을 수행하면 최종적인
Figure 112019128967489-pat00243
가 계산된다. 여기서 방송은 이전 적분 데이터를 생성하는 것이다. 만약
Figure 112019128967489-pat00244
로 두면
Figure 112019128967489-pat00245
가 되도록 하는 것이다.
(H.2.6) 상기한 (H.2.4)부터 (H.2.5) 단계까지 4번 반복해서 (H.2.3)에서 역 배열된 총 4개의
Figure 112019128967489-pat00246
,
Figure 112019128967489-pat00247
,
Figure 112019128967489-pat00248
,
Figure 112019128967489-pat00249
데이터로부터 수평 적분 데이터
Figure 112019128967489-pat00250
,
Figure 112019128967489-pat00251
,
Figure 112019128967489-pat00252
,
Figure 112019128967489-pat00253
를 계산하여 덧대기 해당 위치의 수평 적분영상
Figure 112019128967489-pat00254
에 쓴다. 그리고 (H.2.3)에서 역배열 하지 않고 저장해 놓은
Figure 112019128967489-pat00255
,
Figure 112019128967489-pat00256
,
Figure 112019128967489-pat00257
,
Figure 112019128967489-pat00258
로부터
Figure 112019128967489-pat00259
,
Figure 112019128967489-pat00260
,
Figure 112019128967489-pat00261
,
Figure 112019128967489-pat00262
를 계산하여 해당 위치의 수평 적분 영상
Figure 112019128967489-pat00263
에 쓴다.
(H.2.7) 상기한 (H.2.1)부터 (H.2.6)까지의 과정을 임의의 수평선상 데이터들이 모두 처리될 때까지 반복하여 수행한다. 이 경우에 계산 속도를 추가적으로 증가시키기 위해서 루프 언롤링(loop unrolling) 기법을 적용할 수 있다.
(H.3)
Figure 112019128967489-pat00264
인 경우:
(H.3.0) 상기한 (H.2.0) 단계와 유사하게
Figure 112019128967489-pat00265
크기로 부분 집합을 다시 균등 분할한 부분 집합으로 나눈다. 이 경우에 균등 분할된 부분 집합의 수는
Figure 112019128967489-pat00266
로 둔다.
(H.3.1) 상기 (H.3.0)에서 균등 분할된 부분 집합의 데이터를 읽는다. 그리고 상기한 (H.2.2)부터 (H.2.6)까지의 과정을 수행한다.
(H.3.2) 상기한 (H.2.1)부터 (H.2.6)까지의 과정을
Figure 112019128967489-pat00267
이 될 때까지 반복하여 수행한다. 이 경우에 계산 속도를 추가적으로 증가시키기 위해서 루프 언롤링 기법을 적용할 수 있다.
(H.4)
Figure 112019128967489-pat00268
인 경우:
(H.4.1) 상기한 (H.2) 과정과 동일한 과정으로 처리한다.
(H.5)
Figure 112019128967489-pat00269
인 경우:
(H.5.0) 입력 영상
Figure 112019128967489-pat00270
를 1 바이트 부호 없는 정수를 영 확장 더블 워드 정수로 변환하면서 읽는다. 이는
Figure 112019128967489-pat00271
가 된다.
(H.5.1) 상기한 (H.4.1)의 마지막 방송 데이터를
Figure 112019128967489-pat00272
로 두면 하나의 수평선상의 마지막 화소에 대한 수평 적분 값은
Figure 112019128967489-pat00273
가 된다.
도 7은 수평방향으로 거울 덧대기와 그의 적분영상이 생성된 영역을 나타내기 위한 참고도이다.
(H.6) 상기한 (H.0)부터 (H.5)까지의 과정을 각 코어나 쓰레드에서 각각
Figure 112019128967489-pat00274
번 반복한다. 이 과정을 통해서 상기 식 (6.1)에 나타낸 거울 덧대기 영상의 수평 적분영상
Figure 112019128967489-pat00275
는 도 7에 회색 영역으로 도시한 영역에서 생성된다.
[수직 방향 거울 덧대기 영상 생성부]
상기한 본 발명에 따른 거울 덧대기 영상과 그의 수평 적분영상 동시 생성 방법의 결과로 나온 수평 적분영상
Figure 112019128967489-pat00276
를 상기 식 (7.1)에 적용하여, 본 발명에 따른 수평 적분영상의 수직 방향 거울 덧대기 영상
Figure 112019128967489-pat00277
를 생성하는 방법을 다음과 같이 구현할 수 있다.
상기한 수평 적분영상
Figure 112019128967489-pat00278
에서 수평 적분이 계산되지 않은 수직 영역은 각각
Figure 112019128967489-pat00279
Figure 112019128967489-pat00280
이다.
Figure 112019128967489-pat00281
영역은
Figure 112019128967489-pat00282
영역에 해당하는
Figure 112019128967489-pat00283
를 복사한 이후에 역배열하여
Figure 112019128967489-pat00284
영역의
Figure 112019128967489-pat00285
에 복사한다.
Figure 112019128967489-pat00286
영역은
Figure 112019128967489-pat00287
영역에 해당하는
Figure 112019128967489-pat00288
를 복사한 이후에 역배열하여
Figure 112019128967489-pat00289
영역의
Figure 112019128967489-pat00290
에 복사한다. 여기서
Figure 112019128967489-pat00291
Figure 112019128967489-pat00292
영역에 포함된 임의의 수평선상의 화소들의 크기는
Figure 112019128967489-pat00293
이다. 이를 벡터 레지스터 크기인
Figure 112019128967489-pat00294
로 균등 분할하여 읽기, 역배열, 그리고 쓰기를 한다. 이와 같은 방법으로 생성한
Figure 112019128967489-pat00295
가 식 (7.1)에 나타낸
Figure 112019128967489-pat00296
가 된다.
[거울 덧대기 영상의 최종 적분영상 생성부]
상기한 수평 방향 거울 덧대기의 수평 적분 영상에 대한 수직 방향 거울 덧대기 영상
Figure 112019128967489-pat00297
를 이용하여, 상기 식 (8.1)에 나타낸 최종 적분 영상
Figure 112019128967489-pat00298
의 생성 방법을 다음과 같이 구현할 수 있다.
(S.0) 초기화:
Figure 112019128967489-pat00299
Figure 112019128967489-pat00300
의 배수가 된다.
Figure 112019128967489-pat00301
의 배수로 균등 분할된
Figure 112019128967489-pat00302
Figure 112019128967489-pat00303
로 표기한다. 여기서
Figure 112019128967489-pat00304
이며,
Figure 112019128967489-pat00305
로 주어진다. 이에 해당하는 상기 식 (8.1)에 나타낸 적분 영상
Figure 112019128967489-pat00306
Figure 112019128967489-pat00307
이 된다.
수직 좌표
Figure 112019128967489-pat00308
Figure 112019128967489-pat00309
에서 서로 다른 2개의 벡터 레지스터가 읽어 들이는 데이터를 각각
Figure 112019128967489-pat00310
Figure 112019128967489-pat00311
으로 둔다. 이 경우에,
Figure 112019128967489-pat00312
(16.1)
Figure 112019128967489-pat00313
(16.2)
가 된다.
상기한 식 (16)을 이용하여, 상기한 식 (8.1)에 나타낸 적분영상
Figure 112019128967489-pat00314
을 계산한다. 이 경우에
Figure 112019128967489-pat00315
Figure 112019128967489-pat00316
는,
Figure 112019128967489-pat00317
=
Figure 112019128967489-pat00318
(17.1)
Figure 112019128967489-pat00319
(17.2)
가 된다.
(S.1) 각 코어나 쓰레드에서 상기한 (S.0) 과정을 각 코어나 쓰레드에 할당된 수평과 수직 영역에서 반복하여 수행한다. 이와 같은 과정을 거쳐서 식 (8.1)에 나타낸 최종적인 적분영상
Figure 112019128967489-pat00320
를 생성한다.
상기한 방법은 영 덧대기의 경우에서도 유사하게 적용할 수 있다.
본 발명에 따른 하나의 실시예로 덧대기 영상의 적분영상 생성 방법을 GPU 없는 멀티-코어 또는 멀티-쓰레드 환경에서 SIMD 명령어를 기반으로 구현하는 방법은 하나의 코어나 쓰레드가 전 영역을 계산하는 경우보다 저장 공간의 증가없이 코어나 쓰레드 수만큼 계산 속도를 증가시킬 수 있다.
상기한 선행기술문헌들 가운데 해외논문 009 문헌을 기준으로 적분영상 생성 수행 시간을 본 발명에 따른 적분영상 생성 방법의 수행 시간과 비교해본 결과에 따르면 본 발명에 따른 적분영상 생성방법이 수행 시간을 가장 단축시킬 수 있음을 확인하였다.
상기한 식 (8)로 주어지는 적분영상
Figure 112019128967489-pat00321
를 이용하여, 상기한 식 (1)에 나타낸
Figure 112019128967489-pat00322
를 다음과 같이 계산할 수 있다.
Figure 112019128967489-pat00323
(18.1)
Figure 112019128967489-pat00324
(18.2)
Figure 112019128967489-pat00325
(18.3)
여기서
Figure 112019128967489-pat00326
이고
Figure 112019128967489-pat00327
이다. 그리고
Figure 112019128967489-pat00328
이고
Figure 112019128967489-pat00329
이다. 결과적으로
Figure 112019128967489-pat00330
의 크기는 입력 영상
Figure 112019128967489-pat00331
의 크기와 동일하게 된다.
[덧대기 적분영상으로부터 평균차이 필터 구현 및 삼진영상 생성 방법]
상기한 전경창과 배경창의 크기에 무관하게 평균차이 필터를 계산하는 것은 머신 비전의 필수적인 요구 사항이다. 입력영상
Figure 112019128967489-pat00332
로부터 본 발명에 따라 상기한 식 (8)에 나타낸 덧대기 적분영상
Figure 112019128967489-pat00333
을 생성한 이후에, 이를 이용하여 상기한 식 (18)에 나타낸 평균차이 필터를 효율적으로 계산한다. 그리고 이를 이용하여 상기한 식 (2)에 주어진 영상분할 방법으로 최종적으로 삼진영상
Figure 112019128967489-pat00334
를 생성한다.
상기한 방법으로 생성된 덧대기 적분 영상
Figure 112019128967489-pat00335
에서 상기한 식 (18)에 나타낸 평균차이 필터를 다음과 같이 구현할 수 있다.
(T.0) 상기한 식 (18.1)에 나타낸 전경창의 평균값
Figure 112019128967489-pat00336
는 서로 다른 4점인
Figure 112019128967489-pat00337
,
Figure 112019128967489-pat00338
,
Figure 112019128967489-pat00339
,
Figure 112019128967489-pat00340
에 대응되는 4개의 적분영상 값인
Figure 112019128967489-pat00341
,
Figure 112019128967489-pat00342
,
Figure 112019128967489-pat00343
,
Figure 112019128967489-pat00344
로 다음과 같이 계산할 수 있다.
Figure 112019128967489-pat00345
(19.1)
상기한 식 (18.2)에 나타낸 배경창의 평균값
Figure 112019128967489-pat00346
는 서로 다른 4점인
Figure 112019128967489-pat00347
,
Figure 112019128967489-pat00348
,
Figure 112019128967489-pat00349
,
Figure 112019128967489-pat00350
에 대응되는 4개의 적분영상 값인
Figure 112019128967489-pat00351
,
Figure 112019128967489-pat00352
,
Figure 112019128967489-pat00353
,
Figure 112019128967489-pat00354
로 다음과 같이 계산할 수 있다.
Figure 112019128967489-pat00355
(19.2)
(T.1) 상기한 식 (19.1)을 이용하여 한번에
Figure 112019128967489-pat00356
개의 전경창들의 평균값
Figure 112019128967489-pat00357
를 다음과 같이 계산할 수 있다.
Figure 112019128967489-pat00358
(20.1)
여기에서,
Figure 112019128967489-pat00359
(20.2)
Figure 112019128967489-pat00360
(20.3)
Figure 112019128967489-pat00361
(20.4)
Figure 112019128967489-pat00362
(20.5)
이다. 그리고
Figure 112019128967489-pat00363
,
Figure 112019128967489-pat00364
,
Figure 112019128967489-pat00365
,
Figure 112019128967489-pat00366
이다. 그리고
Figure 112019128967489-pat00367
이다.
상기한 식 (19.2)를 이용하여 한번에
Figure 112019128967489-pat00368
개의 배경창들의 평균값
Figure 112019128967489-pat00369
를 다음과 같이 계산할 수 있다.
Figure 112019128967489-pat00370
(21.1)
여기에서,
Figure 112019128967489-pat00371
(21.2)
Figure 112019128967489-pat00372
(21.3)
Figure 112019128967489-pat00373
(21.4)
Figure 112019128967489-pat00374
(21.5)
이다. 그리고
Figure 112019128967489-pat00375
,
Figure 112019128967489-pat00376
,
Figure 112019128967489-pat00377
,
Figure 112019128967489-pat00378
이다. 그리고
Figure 112019128967489-pat00379
이다.
(T.3) 결과적으로
Figure 112019128967489-pat00380
개 평균차이 필터의 값들은,
Figure 112019128967489-pat00381
=
Figure 112019128967489-pat00382
(22)
로 주어진다.
도 8은 평균차이 필터로부터 삼진 영상 생성 방법(3000)을 설명하기 위한 참고도이다.
상기한 식 (22)와 식 (2)를 이용하여 최종적으로 삼진영상
Figure 112019128967489-pat00383
도 한번에
Figure 112019128967489-pat00384
개를 동시에 계산할 수 있다. 이 경우에 상기한 식 (2)를 구현하는 평균차이 필터의 값들로부터 영상분할 되는 삼진영상의 생성 방법(3000)은 도 8에 나타낸 바와 같다.
도 8에서 상기한 식 (22)에 나타낸
Figure 112019128967489-pat00385
개 평균차이 필터의 값들인
Figure 112019128967489-pat00386
가 벡터 레지스터에 저장되어 삼진영상 생성부(3000)에 입력되면 상기한 식 (2)에 나타낸 바와 같이
Figure 112019128967489-pat00387
의 요소
Figure 112019128967489-pat00388
이면
Figure 112019128967489-pat00389
로 그렇지 않으면
Figure 112019128967489-pat00390
으로 저장한다.
마찬가지로
Figure 112019128967489-pat00391
의 요소
Figure 112019128967489-pat00392
이면
Figure 112019128967489-pat00393
로, 그렇지 않으면
Figure 112019128967489-pat00394
으로 저장한다.
그 다음 단계에서는
Figure 112019128967489-pat00395
의 요소들의 MSB(most significant bit)를 모두 영으로 바꾸어 주고 워드 데이터로 변환한다. 이어서
Figure 112019128967489-pat00396
의 요소들을 오른쪽으로
Figure 112019128967489-pat00397
비트 이동시킨 다음에 다시 왼쪽으로
Figure 112019128967489-pat00398
비트 이동시킨다. 그리고 바이트 데이터로 변환시킨다. 그리고
Figure 112019128967489-pat00399
의 요소를
Figure 112019128967489-pat00400
로 비교한 결과와
Figure 112019128967489-pat00401
의 요소를
Figure 112019128967489-pat00402
로 비교한 상기의 과정으로 생성되는 각각의 바이트 데이터를 논리 합 연산(OR)으로 입력영상의 크기와 동일한 크기를 가지는 최종적인 삼진영상
Figure 112019128967489-pat00403
을 생성한다.
상기한 거울 덧대기 영상 기반 그의 적분영상 동시 생성부, 평균차이 필터부, 삼진영상 생성부는 영 덧대기 영상의 경우에서도 유사하게 적용할 수 있다.
1000: 덧대기 영상과 그의 적분영상 동시 생성부
2000: 평균차이 필터 계산부
2100: 수평 적분영상 생성부
2200: 정수 변환부
2210: 치환부
2220: 풀기1부
2230: 풀기2부
2300: 이동합산부
2400: 혼합합산부
3000: (평균차이) 필터부
4000: 삼진영상 생성부

Claims (10)

  1. 적분영상 기반 영상분할 초고속 병렬 연산 방법에 있어서;
    상기 연산방법은, 입력영상으로부터 덧대기 영상과 그의 적분영상의 동시 생성단계와, 상기 적분영상의 계산 값을 이용하는 평균차이 필터링단계와,
    상기 평균차이 필터링에 의하여 생성된 값들을 이용하여 영상분할된 삼진영상 생성단계를 적어도 포함하는 것을 특징으로 하는 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법.
  2. 제 1 항에 있어서,
    상기 덧대기 영상과 상기 적분영상 동시 생성단계는;
    수평 방향 덧대기 영상과 그의 적분영상의 동시 생성단계와,
    수직 방향 덧대기 영상 생성단계와, 상기 덧대기 영상의 최종 적분영상 생성부에서의 생성단계를 더 포함하는 것을 특징으로 하는 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법.
  3. 제 2 항에 있어서,
    상기 수평 방향 덧대기 영상과 그의 적분영상 동시 생성부는;
    수평과 수직 크기가 각각
    Figure 112019128967489-pat00404
    Figure 112019128967489-pat00405
    인 입력영상
    Figure 112019128967489-pat00406
    에서 임의의 수평선상에서 수학 식,
    Figure 112019128967489-pat00407
    ,
    Figure 112019128967489-pat00408
    ,
    Figure 112019128967489-pat00409
    ,
    (단,
    Figure 112019128967489-pat00410
    = 1바이트(Byte) 부호 없는 정수를 4바이트 정수 데이터로 변환하는 연산자)으로 거울 덧대기 영상
    Figure 112019128967489-pat00411
    와 영 덧대기 영상
    Figure 112019128967489-pat00412
    를 생성하는 단계와,
    이로부터 수학식,
    Figure 112019128967489-pat00413
    ,
    Figure 112019128967489-pat00414
    ,
    로 수평선상의 거울 덧대기 적분영상
    Figure 112019128967489-pat00415
    와 영 덧대기 적분영상
    Figure 112019128967489-pat00416
    을 생성하는 단계를 포함하고,
    상기 수직 방향 덧대기 영상 생성부는, 상기 수평선상의 거울 덧대기 적분영상
    Figure 112019128967489-pat00417
    와 영 덧대기 적분영상
    Figure 112019128967489-pat00418
    을 이용한 수학 식,
    Figure 112019128967489-pat00419
    ,
    Figure 112019128967489-pat00420
    ,
    Figure 112019128967489-pat00421
    ,
    으로 수직 방향 거울 덧대기 적분영상
    Figure 112019128967489-pat00422
    와 영 덧대기 적분영상
    Figure 112019128967489-pat00423
    를 생성하는 단계를 포함하고,
    상기 덧대기 영상의 최종 적분영상 생성부는,
    상기 수직 방향 거울 덧대기 적분영상
    Figure 112019128967489-pat00424
    와 영 덧대기 적분영상
    Figure 112019128967489-pat00425
    를 이용한 수학 식,
    Figure 112019128967489-pat00426
    , 또는
    Figure 112019128967489-pat00427
    ,
    로 거울 덧대기와 영 덧대기 한 영상의 적분영상
    Figure 112019128967489-pat00428
    을 생성하는 단계를 포함하고,
    상기 수학 식의
    Figure 112019128967489-pat00429
    Figure 112019128967489-pat00430
    ,
    Figure 112019128967489-pat00431
    Figure 112019128967489-pat00432
    ,
    Figure 112019128967489-pat00433
    Figure 112019128967489-pat00434
    Figure 112019128967489-pat00435
    와 동일한 메모리 공간을 가지는 것을 특징으로 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법.
  4. 제 3 항에 있어서,
    상기 덧대기 영상을 생성하는 경우에, 상기 덧대기 영상의 중앙에 입력영상을 배치하고 상하와 좌우에 각각 상기 수학 식에 나타낸
    Figure 112019128967489-pat00436
    Figure 112019128967489-pat00437
    만큼, 영이나 거울 덧대기로 덧대어 생성하는 덧대기 영상의 크기가 수평과 수직으로 각각
    Figure 112019128967489-pat00438
    Figure 112019128967489-pat00439
    가 되도록 하는데 있어서,
    입력영상의 크기, 병렬 연산 코어의 총 수
    Figure 112019128967489-pat00440
    , 벡터 레지스터의 크기
    Figure 112019128967489-pat00441
    , 그리고 홀수 값을 가지는 임의의 사각 형태와 크기를 가지는 평균차이 필터의 전경창과 배경창에 있어서 배경창의 수평 최대 크기
    Figure 112019128967489-pat00442
    와 수직 최대 크기
    Figure 112019128967489-pat00443
    를 이용한 수학식
    Figure 112019128967489-pat00444
    ,
    Figure 112019128967489-pat00445
    ,
    Figure 112019128967489-pat00446
    ,
    ( 단:
    Figure 112019128967489-pat00447
    sms greatest lower bound의 약자,
    Figure 112019128967489-pat00448
    :
    Figure 112019128967489-pat00449
    의 몫을 계산하는 연산자,
    Figure 112019128967489-pat00450
    인 정수)로
    Figure 112019128967489-pat00451
    Figure 112019128967489-pat00452
    를 결정하는 것을 특징으로 하는 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법.
  5. 제 3 항에 있어서,
    상기 덧대기 영상에서 수평선상의 적분영상을 초고속 병렬 연산으로 생성하기 위해서, 수직 방향으로 그 영상의 영역이 중복(overlap)되는 것을 허용하고 그 영상의 영역에서 계산되는 적분영상의 최대값이 최대 4바이트 정수 데이터의 범위를 벗어나지 않도록
    Figure 112019128967489-pat00453
    개로 균등 분할된 입력영상
    Figure 112019128967489-pat00454
    (여기서
    Figure 112019128967489-pat00455
    )에서 하나의 수평선상에 포함된 화소들의 집합을 수학 식,
    Figure 112019128967489-pat00456

    에 따라서 총 5개의 부분 집합들로 나누는 단계와,
    여기서,
    Figure 112019128967489-pat00457
    인 경우에, 입력영상
    Figure 112019128967489-pat00458
    에 해당하는 1바이트 부호 없는 정수를 읽고, 다시 요소의 수가
    Figure 112019128967489-pat00459
    개인 벡터 레지스터의 0번째 요소에 영 확장 더블 워드 정수로 변환하여 저장하고, 저장된 값을 벡터 레지스터의 나머지 요소에도 동일하게 저장하여, 상기한 덧대기 수평 적분영상
    Figure 112019128967489-pat00460
    또는
    Figure 112019128967489-pat00461
    에서
    Figure 112019128967489-pat00462
    의 위치에 저장함과 더불어 수평 적분영상의 초기값
    Figure 112019128967489-pat00463
    로 이용하는 단계와,
    여기서,
    Figure 112019128967489-pat00464
    인 경우에, 벡터 레지스터의 크기
    Figure 112019128967489-pat00465
    만큼
    Figure 112019128967489-pat00466
    를 중복을 허용하여
    Figure 112019128967489-pat00467
    개로 균등 분할하여, 하나의 부분 집합에 해당하는 1바이트 부호 없는 정수인 화소들의 밝기값을 수학식,
    Figure 112019128967489-pat00468
    ,
    Figure 112019128967489-pat00469
    ,
    로 나타낸 바와 같이 하나의 벡터 레지스터로 읽을 때에
    Figure 112019128967489-pat00470
    순으로 읽으면서 중복되는 화소들의 값을 영으로 적절하게 처리하여 벡터 레지스터에 저장하는 단계와,
    상기 벡터 레지스터로 읽은 1바이트 부호 없는 정수를 4바이트 정수로 변환하기 위해서, 수학 식,
    Figure 112019128967489-pat00471
    ,
    Figure 112019128967489-pat00472
    ,
    (단,
    Figure 112019128967489-pat00473
    는 1바이트 부호 없는 정수,
    Figure 112019128967489-pat00474
    Figure 112019128967489-pat00475
    은 임의의 벡터 레지스터를 의미하는 인덱스(index))로 치환하는 단계와,
    수학 식,
    Figure 112019128967489-pat00476
    ,
    Figure 112019128967489-pat00477
    ,
    로 1바이트 부호 없는 정수를
    Figure 112019128967489-pat00478
    로 나타낸 2바이트 부호 없는 정수로 바꾸는 단계와,
    수학 식,
    Figure 112019128967489-pat00479
    ,
    Figure 112019128967489-pat00480
    ,
    Figure 112019128967489-pat00481
    ,
    Figure 112019128967489-pat00482
    ,
    로 2바이트 부호 없는 정수를
    Figure 112019128967489-pat00483
    로 나타낸 4바이트 부호 없는 정수로 바꾸는 단계와,
    상기 수학 식에 나타낸
    Figure 112019128967489-pat00484
    ,
    Figure 112019128967489-pat00485
    ,
    Figure 112019128967489-pat00486
    ,
    Figure 112019128967489-pat00487
    을 덧대기 영역인
    Figure 112019128967489-pat00488
    과 덧대기 영역이 아닌
    Figure 112019128967489-pat00489
    에서도 이용하기 위해서
    Figure 112019128967489-pat00490
    ,
    Figure 112019128967489-pat00491
    ,
    Figure 112019128967489-pat00492
    ,
    Figure 112019128967489-pat00493
    을 별도의 저장 공간에 저장해 두는 단계와,
    상기 수학 식
    Figure 112019128967489-pat00494
    ,
    Figure 112019128967489-pat00495
    ,
    Figure 112019128967489-pat00496
    ,
    Figure 112019128967489-pat00497
    의 요소들을 수학 식,
    Figure 112019128967489-pat00498
    ,
    Figure 112019128967489-pat00499
    ,
    Figure 112019128967489-pat00500
    ,
    Figure 112019128967489-pat00501
    ,
    로 역배열 변환하는 단계와,
    상기 수학 식
    Figure 112019128967489-pat00502
    ,
    Figure 112019128967489-pat00503
    ,
    Figure 112019128967489-pat00504
    ,
    Figure 112019128967489-pat00505
    를 이동합산하는 과정에서,
    Figure 112019128967489-pat00506
    인 경우에, 수학 식
    Figure 112019128967489-pat00507
    를 이용하여, 수학 식,
    Figure 112019128967489-pat00508

    로 이동합산 값
    Figure 112019128967489-pat00509
    를 계산하는 단계와, 동일하게 나머지
    Figure 112019128967489-pat00510
    ,
    Figure 112019128967489-pat00511
    ,
    Figure 112019128967489-pat00512
    를 계산하는 단계와,
    Figure 112019128967489-pat00513
    인 경우에, 수학식,
    Figure 112019128967489-pat00514

    로 이동합산
    Figure 112019128967489-pat00515
    를 계산하는 단계와, 동일하게 나머지
    Figure 112019128967489-pat00516
    ,
    Figure 112019128967489-pat00517
    ,
    Figure 112019128967489-pat00518
    를 계산하는 단계와,
    Figure 112019128967489-pat00519
    인 경우 등에서도 상기한 이동합산 단계와, 유사한 방법으로
    Figure 112019128967489-pat00520
    ,
    Figure 112019128967489-pat00521
    ,
    Figure 112019128967489-pat00522
    ,
    Figure 112019128967489-pat00523
    를 계산하는 단계와,
    상기 이동합산의 결과인 상기 수학식
    Figure 112019128967489-pat00524
    ,
    Figure 112019128967489-pat00525
    ,
    Figure 112019128967489-pat00526
    ,
    Figure 112019128967489-pat00527
    는 혼합합산하는 과정에 있어서, 수학 식,
    Figure 112019128967489-pat00528

    로 표현되는 치환과 혼합 단계와, 동일하게
    Figure 112019128967489-pat00529
    ,
    Figure 112019128967489-pat00530
    ,
    Figure 112019128967489-pat00531
    를 치환과 혼합하는 단계와,
    상기 치환과 혼합된 수학 식
    Figure 112019128967489-pat00532
    를 이용하여, 수학식,
    Figure 112019128967489-pat00533

    로 합산하는 동일한 방법으로
    Figure 112019128967489-pat00534
    ,
    Figure 112019128967489-pat00535
    ,
    Figure 112019128967489-pat00536
    를 계산하는 단계와,
    상기
    Figure 112019128967489-pat00537
    인 경우에 수평 적분영상 초기값
    Figure 112019128967489-pat00538
    과 상기 수학식
    Figure 112019128967489-pat00539
    를 이용하여, 수학식,
    Figure 112019128967489-pat00540

    로 수평 적분영상을 계산하여 해당 위치의 수평 적분영상
    Figure 112019128967489-pat00541
    에 저장하는 단계와,
    상기 수학 식
    Figure 112019128967489-pat00542
    ,
    Figure 112019128967489-pat00543
    ,
    Figure 112019128967489-pat00544
    를 이용하여
    Figure 112019128967489-pat00545
    ,
    Figure 112019128967489-pat00546
    ,
    Figure 112019128967489-pat00547
    을 계산하는 경우에 있어서, 상기 수학 식
    Figure 112019128967489-pat00548
    Figure 112019128967489-pat00549
    ,
    Figure 112019128967489-pat00550
    ,
    Figure 112019128967489-pat00551
    인 경우에 각각
    Figure 112019128967489-pat00552
    ,
    Figure 112019128967489-pat00553
    ,
    Figure 112019128967489-pat00554
    의 MSB 요소 값을
    Figure 112019128967489-pat00555
    의 모든 요소 값으로 대치하여 수평 적분영상
    Figure 112019128967489-pat00556
    ,
    Figure 112019128967489-pat00557
    ,
    Figure 112019128967489-pat00558
    을 계산하여 해당 위치의 수평 적분영상
    Figure 112019128967489-pat00559
    에 저장하는 단계와,
    상기 역배열 하지 않고 저장해 놓은
    Figure 112019128967489-pat00560
    ,
    Figure 112019128967489-pat00561
    ,
    Figure 112019128967489-pat00562
    ,
    Figure 112019128967489-pat00563
    로부터 상기 이동합산과 혼합합산 과정을 통해서
    Figure 112019128967489-pat00564
    ,
    Figure 112019128967489-pat00565
    ,
    Figure 112019128967489-pat00566
    ,
    Figure 112019128967489-pat00567
    를 계산하여 해당 위치의 수평 적분영상
    Figure 112019128967489-pat00568
    에 저장하는 단계와,
    상기 수평선상의 적분영상
    Figure 112019128967489-pat00569
    생성 과정에서 균등 분할된 영역이내에 있는 임의의 수평선상의 모든 데이터들이 모두 처리될 때까지 반복하여 수행하는데 있어서, 그 계산 속도를 추가적으로 증가시키기 위해서 루프 언롤링(loop unrolling) 기법을 적용하는 단계와,
    여기서,
    Figure 112019128967489-pat00570
    인 경우와
    Figure 112019128967489-pat00571
    인 경우에, 상기
    Figure 112019128967489-pat00572
    인 경우와 동일한 과정을 통해서 수평 적분영상을 생성하여 해당 위치에 저장하는 단계와,
    여기서,
    Figure 112019128967489-pat00573
    인 경우에, 상기
    Figure 112019128967489-pat00574
    인 경우와 동일하게 입력영상의 해당 위치로부터 읽어들인 1바이트 부호 없는 정수를 4바이트 부호 없는 정수로 변환하여,
    Figure 112019128967489-pat00575
    의 위치에서 계산된 적분 값을 더하여 수평 적분영상의 해당 위치에 저장하는 단계를 포함하는 것을 특징으로 하는 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법.
  6. 제 2 항에 있어서,
    상기 수직 방향 덧대기 영상 생성단계는;
    상기 제 3항 기재의 수학 식
    Figure 112021112076330-pat00576
    Figure 112021112076330-pat00577
    로 나타낸 수직 방향 덧대기 영상을 초고속 병렬 연산으로 생성하기 위해서, 상기 제 5항에서 생성 저장된 덧대기 영상의 수평 적분영상
    Figure 112021112076330-pat00578
    에서 수평 적분이 계산되지 않은 수직 영역인
    Figure 112021112076330-pat00579
    Figure 112021112076330-pat00580
    은 각각, 수학 식,
    Figure 112021112076330-pat00581
    ,
    Figure 112021112076330-pat00582
    ,
    로 나타낸 영역으로서,
    Figure 112021112076330-pat00583
    Figure 112021112076330-pat00584
    영역에 해당하는
    Figure 112021112076330-pat00585
    의 각 영역은 수학식,
    Figure 112021112076330-pat00586
    ,
    Figure 112021112076330-pat00587
    ,
    로서, 이들 각 영역의 크기인
    Figure 112021112076330-pat00588
    를 벡터 레지스터의 크기
    Figure 112021112076330-pat00589
    만큼 중복을 허용한 균등 분할하여 읽기와 역배열의 연산으로 생성되는
    Figure 112021112076330-pat00590
    Figure 112021112076330-pat00591
    영역의 적분 값을
    Figure 112021112076330-pat00592
    의 해당 영역에 저장하는 단계를 더 포함하는 것을 특징으로 하는 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법.
  7. 제 2 항에 있어서,
    상기 덧대기 영상의 최종 적분영상 생성부는;
    상기 제 3항 기재의 수직 방향 덧대기 영상
    Figure 112019128967489-pat00593
    Figure 112019128967489-pat00594
    를 이용하여, 최종 적분영상
    Figure 112019128967489-pat00595
    을 초고속 병렬 연산으로 생성하기 위해서,
    Figure 112019128967489-pat00596
    Figure 112019128967489-pat00597
    을 수평 방향으로 그 영상의 영역이 중복(overlap)되는 것을 허용하고 그 영상의 영역에서 계산되는 적분영상의 최대값이 최대 4바이트 정수 데이터의 범위를 벗어나지 않도록 균등 분할한
    Figure 112019128967489-pat00598
    개의 영역에서 수직 방향 덧대기 적분영상
    Figure 112019128967489-pat00599
    Figure 112019128967489-pat00600
    를 이용하는 단계와,
    여기에서 상기
    Figure 112019128967489-pat00601
    Figure 112019128967489-pat00602
    에서
    Figure 112019128967489-pat00603
    Figure 112019128967489-pat00604
    는 수학식,
    Figure 112019128967489-pat00605
    ,
    Figure 112019128967489-pat00606
    , 이며,
    균등 분할된
    Figure 112019128967489-pat00607
    번째 영역의 적분영상은
    Figure 112019128967489-pat00608
    를 생성하기 위해서, 수학식,
    Figure 112019128967489-pat00609
    ,
    Figure 112019128967489-pat00610
    ,
    Figure 112019128967489-pat00611
    Figure 112019128967489-pat00612
    에서 수직 좌표
    Figure 112019128967489-pat00613
    Figure 112019128967489-pat00614
    에서 서로 다른 2개의 벡터 레지스터가 읽어 들이는 데이터를 이용하여, 수학식,
    Figure 112019128967489-pat00615
    =
    Figure 112019128967489-pat00616
    ,
    Figure 112019128967489-pat00617
    ,
    로 적분
    Figure 112019128967489-pat00618
    Figure 112019128967489-pat00619
    를 계산하여, 적분영상
    Figure 112019128967489-pat00620
    의 해당 위치에 저장하는 단계와,
    상기 단계의 방법을 수직과 수평으로 반복하여 최종적인 덧대기 영상의 적분영상
    Figure 112019128967489-pat00621
    를 생성하는 단계를 더 포함하는 것을 특징으로 하는 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법.
  8. 제 1 항에 있어서,
    상기 적분영상을 이용한 평균차이 필터 계산단계는;
    상기 제 7항 기재의 생성한 적분영상
    Figure 112021112076330-pat00622
    를 이용하여 초고속 병렬 연산으로 생성하기 위해서, 수직 방향으로 그 영역의 크기가 균등하게 분할된 적분영상 각각에서 수학식,
    Figure 112021112076330-pat00623
    ,
    Figure 112021112076330-pat00624
    ,
    Figure 112021112076330-pat00625
    ,
    Figure 112021112076330-pat00626
    ,
    Figure 112021112076330-pat00627
    ,
    Figure 112021112076330-pat00628
    ,
    Figure 112021112076330-pat00629
    , 로 주어지는 평균차이 필터값
    Figure 112021112076330-pat00630
    를 계산하고
    Figure 112021112076330-pat00631
    의 크기를 입력 영상
    Figure 112021112076330-pat00632
    의 크기와 동일하도록 하는 단계와,
    상기 단계를 병렬 연산으로 구현하기 위해서, 전경창의 평균값
    Figure 112021112076330-pat00633
    는 수학식,
    Figure 112021112076330-pat00634
    ,
    Figure 112021112076330-pat00635
    ,
    Figure 112021112076330-pat00636
    ,
    Figure 112021112076330-pat00637

    로 주어지는 위치에 대응되는 4개의 적분영상 값인
    Figure 112021112076330-pat00638
    ,
    Figure 112021112076330-pat00639
    ,
    Figure 112021112076330-pat00640
    ,
    Figure 112021112076330-pat00641
    를 이용하여, 수학식,
    Figure 112021112076330-pat00642
    ,
    로 계산하는 단계와,
    배경창의 평균값
    Figure 112021112076330-pat00643
    는 수학 식,
    Figure 112021112076330-pat00644
    ,
    Figure 112021112076330-pat00645
    ,
    Figure 112021112076330-pat00646
    ,
    Figure 112021112076330-pat00647

    로 주어지는 위치에 대응되는 4개의 적분영상 값인
    Figure 112021112076330-pat00648
    ,
    Figure 112021112076330-pat00649
    ,
    Figure 112021112076330-pat00650
    ,
    Figure 112021112076330-pat00651
    를 이용하여, 수학 식,
    Figure 112021112076330-pat00652

    로 계산하는 단계와,
    한번에
    Figure 112021112076330-pat00653
    개의 전경창들의 평균값
    Figure 112021112076330-pat00654
    는, 수학 식.
    Figure 112021112076330-pat00655
    ,
    Figure 112021112076330-pat00656
    ,
    Figure 112021112076330-pat00657
    ,
    Figure 112021112076330-pat00658
    ,
    Figure 112021112076330-pat00659
    ,
    한번에
    Figure 112021112076330-pat00660
    개의 배경창들의 평균값
    Figure 112021112076330-pat00661
    는, 수학 식,
    Figure 112021112076330-pat00662
    ,
    Figure 112021112076330-pat00663
    ,
    Figure 112021112076330-pat00664
    ,
    Figure 112021112076330-pat00665
    ,
    Figure 112021112076330-pat00666
    ,
    Figure 112021112076330-pat00667
    ,
    Figure 112021112076330-pat00668
    ,
    Figure 112021112076330-pat00669
    ,
    Figure 112021112076330-pat00670
    ,
    Figure 112021112076330-pat00671
    로,
    Figure 112021112076330-pat00672
    개 평균차이 필터 값들은 수학 식,
    Figure 112021112076330-pat00673
    =
    Figure 112021112076330-pat00674
    ,
    로 수평과 수직 방향으로 전경창과 배경창의 중심을 이동하면서 반복하여 병렬 연산으로 계산하는 단계를 더 포함하는 것을 특징으로 하는 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법.
  9. 제 1 항에 있어서,
    상기 평균차이 필터단계로부터 생성된 값인
    Figure 112021112076330-pat00701
    를 이용하여 영상분할된 삼진영상 생성부는;
    수직 방향으로 균등 분할된 평균차이 필터값의 각 영역에서 삼진영상을 초고속 병렬 연산으로 생성하기 위해서, 상기 제 8항 기재의 생성된 평균차이 필터값
    Figure 112021112076330-pat00676
    의 요소
    Figure 112021112076330-pat00677
    이면
    Figure 112021112076330-pat00678
    로, 그렇지 않으면
    Figure 112021112076330-pat00679
    으로,
    Figure 112021112076330-pat00680
    의 요소
    Figure 112021112076330-pat00681
    이면
    Figure 112021112076330-pat00682
    로 그렇지 않으면
    Figure 112021112076330-pat00683
    으로 저장하고, 그 다음에는
    Figure 112021112076330-pat00684
    의 요소들의 MSB(most significant bit)를 모두 영으로 바꾸어 주고 워드 데이터로 변환하고, 이어서
    Figure 112021112076330-pat00685
    의 요소들을 오른쪽으로
    Figure 112021112076330-pat00686
    비트 이동시킨 다음에 다시 왼쪽으로
    Figure 112021112076330-pat00687
    비트 이동시킨 다음에 바이트 데이터로 변환시키는 단계와,
    Figure 112021112076330-pat00688
    의 요소를
    Figure 112021112076330-pat00689
    로 비교한 결과와
    Figure 112021112076330-pat00690
    의 요소를
    Figure 112021112076330-pat00691
    로 비교한 상기의 과정으로 생성되는 각각의 바이트 데이터를 논리 합 연산(OR)으로 입력영상의 크기와 동일한 최종적인 삼진영상
    Figure 112021112076330-pat00692
    를 생성하는 단계를 더 포함하는 것을 특징으로 하는 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법.
  10. 적분영상 기반 영상분할 초고속 병렬 연산을 실현하기 위한 병렬 연산 프로그램에 있어서;
    입력영상으로부터 덧대기 영상과 그의 적분영상의 동시 생성기능과,
    상기적분영상의 계산 값을 이용하는 평균차이 필터링 기능과,
    상기 평균차이 필터링에 의하여 생성된 값들을 이용하여 영상분할된 삼진영상 생성기능을 포함하고,
    상기 덧대기 영상과 그의 적분영상 동시 생성기능은, 수평 방향 덧대기 영상과 그의 적분영상 동시 생성기능과, 수직 방향 덧대기 영상 생성기능과, 덧대기 영상의 최종 적분영상의 생성기능을 더 포함하는 것을 특징으로 하는 적분영상 기반 영상분할을 위한 초고속 병렬 연산프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
KR1020190166530A 2019-12-13 2019-12-13 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법 및 초고속 병렬 연산프로그램을 기록한 컴퓨터로 읽을 수 있는 매체 KR102405470B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190166530A KR102405470B1 (ko) 2019-12-13 2019-12-13 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법 및 초고속 병렬 연산프로그램을 기록한 컴퓨터로 읽을 수 있는 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190166530A KR102405470B1 (ko) 2019-12-13 2019-12-13 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법 및 초고속 병렬 연산프로그램을 기록한 컴퓨터로 읽을 수 있는 매체

Publications (2)

Publication Number Publication Date
KR20210075453A KR20210075453A (ko) 2021-06-23
KR102405470B1 true KR102405470B1 (ko) 2022-06-07

Family

ID=76599529

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190166530A KR102405470B1 (ko) 2019-12-13 2019-12-13 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법 및 초고속 병렬 연산프로그램을 기록한 컴퓨터로 읽을 수 있는 매체

Country Status (1)

Country Link
KR (1) KR102405470B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023113466A1 (ko) * 2021-12-14 2023-06-22 주식회사 모빌린트 적분 영상 처리를 위한 영상 처리 장치, 방법 및 기록 매체

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101434484B1 (ko) 2012-06-20 2014-08-26 한국기술교육대학교 산학협력단 영상 분할을 이용한 비전 검사 장치 및 비전 검사 방법
KR101688435B1 (ko) 2015-06-26 2016-12-21 광운대학교 산학협력단 블록 구조를 이용한 적분 영상 생성 장치 및 그 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101434484B1 (ko) 2012-06-20 2014-08-26 한국기술교육대학교 산학협력단 영상 분할을 이용한 비전 검사 장치 및 비전 검사 방법
KR101688435B1 (ko) 2015-06-26 2016-12-21 광운대학교 산학협력단 블록 구조를 이용한 적분 영상 생성 장치 및 그 방법

Also Published As

Publication number Publication date
KR20210075453A (ko) 2021-06-23

Similar Documents

Publication Publication Date Title
Long et al. Sparseneus: Fast generalizable neural surface reconstruction from sparse views
Jiang et al. Novel multi-scale retinex with color restoration on graphics processing unit
US20170186224A1 (en) Using a Geometry Shader for Variable Input and Output Algorithms
US11995854B2 (en) Mesh reconstruction using data-driven priors
US20070189603A1 (en) Raw image processing
US6891546B1 (en) Cache memory for texture mapping process in three-dimensional graphics and method for reducing penalty due to cache miss
CA2308328A1 (en) Data processing system for logically adjacent data samples such as image data in a machine vision system
EP0440077A2 (en) Image processing apparatus
Schneider et al. GPU-based real-time discrete Euclidean distance transforms with precise error bounds
KR102405470B1 (ko) 적분영상 기반 영상분할을 위한 초고속 병렬 연산 방법 및 초고속 병렬 연산프로그램을 기록한 컴퓨터로 읽을 수 있는 매체
Griwodz et al. Popsift: A faithful SIFT implementation for real-time applications
US11010939B2 (en) Rendering of cubic Bezier curves in a graphics processing unit (GPU)
Bellas et al. Real-time fisheye lens distortion correction using automatically generated streaming accelerators
CN113506305B (zh) 三维点云数据的图像增强方法、语义分割方法及装置
US6778188B2 (en) Reconfigurable hardware filter for texture mapping and image processing
US10212406B2 (en) Image generation of a three-dimensional scene using multiple focal lengths
US20080211823A1 (en) Three-dimensional graphic accelerator and method of reading texture data
CN116257208A (zh) 用于矩阵乘法阵列上的可分离卷积过滤器操作的方法和装置
US20210264560A1 (en) Loading apparatus and method for convolution with stride or dilation of 2
Shin et al. A real-time video processing implementation with massively parallel computation support
CN110619668B (zh) 一种图像抽象方法、装置及终端设备
CN114202657A (zh) 用于图像处理的方法和设备
US11030792B1 (en) System and method for packing sparse arrays of data while preserving order
Panwar et al. Inception-based CNN for low-light image enhancement
Jones Speeding up Annual Daylighting Simulation Using NumPy

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant