본 논문에서는 SSE (Streaming SIMD Extensions) 명령어를 이용한 고속 영상처리알고리즘을 제안한다. SSE 명령어를 지원하는 CPU는 128비트 크기의 XMM 레지스터를 보유하고 있으며 이에 속한 데이터는 SIMD(Single Instruction Multiple Data) 방식으로 한 번에 병렬로 처리 될 수 있다. 영상처리에서 폭넓게 활용되는 평균 필터, 소벨 수평방향 외곽선 검출, 이진 침식 알고리즘을 SIMD 방식으로 효과적으로 처리 할 수 있는 알고리즘을 제시하였고, 수행 시간을 측정하였다. 보다 객관적인 수행 속도 평가를 위해 현재 많이 사용되고 있는 영상처리 라이브러리와의 수행 속도를 비교하였다. 비교에 사용된 라이브러리는 SISD(Single Instruction Single Data)방식으로 동작하는 OpenCV 1.0, SIMD 방식을 지원하는 고속 영상처리 라이브러리인 IPP 5.2와 MIL 8.0에서 각각 수행 시간을 측정하고 제안하는 알고리즘의 처리 속도와 비교하였다. 실험결과 제안하는 알고리즘은 SISD방식의 영상처리 라이브러리에 비해 평균 8배의 성능향상을 보였으며, SIMD 방식의 고속 영상처리 라이브러리와 비교 하였을 때 평균 1.4배의 성능향상을 보였다. 따라서 제안하는 알고리즘은 고가의 영상처리 라이브러리와 추가적인 하드웨어의 구입 없이도 고속으로 동작해야 하는 실제 영상 처리 어플리케이션에 효과적으로 적용될 수 있음을 보였다.
본 논문에서는 SSE (Streaming SIMD Extensions) 명령어를 이용한 고속 영상처리 알고리즘을 제안한다. SSE 명령어를 지원하는 CPU는 128비트 크기의 XMM 레지스터를 보유하고 있으며 이에 속한 데이터는 SIMD(Single Instruction Multiple Data) 방식으로 한 번에 병렬로 처리 될 수 있다. 영상처리에서 폭넓게 활용되는 평균 필터, 소벨 수평방향 외곽선 검출, 이진 침식 알고리즘을 SIMD 방식으로 효과적으로 처리 할 수 있는 알고리즘을 제시하였고, 수행 시간을 측정하였다. 보다 객관적인 수행 속도 평가를 위해 현재 많이 사용되고 있는 영상처리 라이브러리와의 수행 속도를 비교하였다. 비교에 사용된 라이브러리는 SISD(Single Instruction Single Data)방식으로 동작하는 OpenCV 1.0, SIMD 방식을 지원하는 고속 영상처리 라이브러리인 IPP 5.2와 MIL 8.0에서 각각 수행 시간을 측정하고 제안하는 알고리즘의 처리 속도와 비교하였다. 실험결과 제안하는 알고리즘은 SISD방식의 영상처리 라이브러리에 비해 평균 8배의 성능향상을 보였으며, SIMD 방식의 고속 영상처리 라이브러리와 비교 하였을 때 평균 1.4배의 성능향상을 보였다. 따라서 제안하는 알고리즘은 고가의 영상처리 라이브러리와 추가적인 하드웨어의 구입 없이도 고속으로 동작해야 하는 실제 영상 처리 어플리케이션에 효과적으로 적용될 수 있음을 보였다.
This paper proposes fast image processing algorithms using SSE (Streaming SIMD Extensions) instructions. The CPU's supporting SSE instructions have 128bit XMM registers; data included in these registers are processed at the same time with the SIMD (Single Instruction Multiple Data) mode. This paper ...
This paper proposes fast image processing algorithms using SSE (Streaming SIMD Extensions) instructions. The CPU's supporting SSE instructions have 128bit XMM registers; data included in these registers are processed at the same time with the SIMD (Single Instruction Multiple Data) mode. This paper develops new SIMD image processing algorithms for Mean filter, Sobel horizontal edge detector, and Morphological erosion operation which are most widely used in automated optical inspection systems and compares their processing times. In order to objectively evaluate the processing time, the developed algorithms are compared with OpenCV 1.0 operated in SISD (Single Instruction Single Data) mode, Intel's IPP 5.2 and MIL 8.0 which are fast image processing libraries supporting SIMD mode. The experimental result shows that the proposed algorithms on average are 8 times faster than the SISD mode image processing library and 1.4 times faster than the SIMD fast image processing libraries. The proposed algorithms demonstrate their applicability to practical image processing systems at high speed without commercial image processing libraries or additional hardwares.
This paper proposes fast image processing algorithms using SSE (Streaming SIMD Extensions) instructions. The CPU's supporting SSE instructions have 128bit XMM registers; data included in these registers are processed at the same time with the SIMD (Single Instruction Multiple Data) mode. This paper develops new SIMD image processing algorithms for Mean filter, Sobel horizontal edge detector, and Morphological erosion operation which are most widely used in automated optical inspection systems and compares their processing times. In order to objectively evaluate the processing time, the developed algorithms are compared with OpenCV 1.0 operated in SISD (Single Instruction Single Data) mode, Intel's IPP 5.2 and MIL 8.0 which are fast image processing libraries supporting SIMD mode. The experimental result shows that the proposed algorithms on average are 8 times faster than the SISD mode image processing library and 1.4 times faster than the SIMD fast image processing libraries. The proposed algorithms demonstrate their applicability to practical image processing systems at high speed without commercial image processing libraries or additional hardwares.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에 서 는 SSE 명령어를 이 용한 고속 영 상처 리 알고리즘을 제안하였다. SIMD 방식으로 이미지를 처리하기 위해서는 기존 영상처리 알고리즘 효과적인 변형이 필요하다.
본 논문에서는 SIMD 연산을 효과적으로 수행 할 수 있는 프로그래밍 방법론을 설명하고 SSE명령어 집합을 이용한 효율적인 영상처리 알고리즘을 제안한다. 알고리즘의 구현은 현재 CPU 시장의 80%를 점유하고 있는 인텔 프로세서를 기반으로 하였다.
가설 설정
처리 되어야 할 영상이 한 픽셀 당 32비트의 크기를 갖고 있으며 128비트로 정렬되어 있다고 가정한다. 데이터가 픽셀 당 32비트 크기를 갖고 있지 않다면 32비트 데이터로의 타입 변환과 128비트 단위로의 정렬 과정이 포함된다.
제안 방법
각 알고리즘에 5개의 막대그래프가 있는데 순서대로 최적화된 순차처리, OpenCV, MIL, IPP, 제안하는 SSE 구현 방법을 나타낸다. 그림 13을 보면 제안하는 SSE 명령어를 이용한 SIMD 알고리즘 방법이 상용 라이브러리와 순차처리 코드에 비해 빠르게 영상처리 알고리즘을 수행 할 수 있음을 보여준다.
두 가지 팽창과 침식 연산을 기초로 하여 열림 (Opening, 닫힘 (Closing). 경계 추출, 영역 채움, 볼록 깍지 (Convex hull), 농밀화, 세선화 등 다양한 영상처리 알고리즘들을 구현 할 수 있게 된다.
열림 연산의 경우 팽창 연산을 적용 후 그 결과에 침식 연산을 적용하는 알고리즘이고, 닫힘 연산의 경우 침식 연산을 적용한 결과에 팽창연산을 적용한 연산이다. 따라서 표1의 열림과 닫힘 연산의 처리 시간은 제안하는 팽창과 침식 연산을 순차적으로 적용한 후 이 처리 시간을 측정 하였다. 평균 필터와 소벨 수평방향 외곽선 검출의 경우 2가지 방법으로 구현하였기 때문에 본 논문에서의 첫 번째 구현을 4로 두 번째 구현을 B로 표기하였다.
전체적인 8비트 정수 데이터를 이용한 평균 필터의 구현 과정을 그림 6에 나타내었다. 먼저 16개의 8비트 픽셀 데이터를 XMM 레지스터로 로드 한 후 unpack 명령어를 통하여 8개의 16비트 픽셀 데이터 형태로 바꾸어 준다. 이렇게 바뀐 8개의 픽셀 데이터를 그림 5의 Step2 에서 M2 레지스터를 구한 것처럼 열 방향으로 더해준다.
하는데 주로 이용된다. 본 연구에서는 3x3 평균 필터를 SIMD 연산을 이용하여 수행 할 수 있도록 구현 하였다. 실제 평균 필터의 응답을 수식 ⑴에 나타내었다.
할 수 있다. 소벨 수평방향 필터의 처리 속도를 높이기 위하여 SSSE3에 추가된 명령어인 곱과 합 명령어와 XMM 속한 데이터를 순서를 쉽게 변형 시킬 수 있는 명령어를 활용하여 수행 시간을 단축시켰다. 그림 8은 소 벨 수평방향 필터의 상단 부분 연산의 결과 중 홀수 인덱스를 갖는 결과를 생성하는 과정을 나타낸다.
알고리즘의 구현은 현재 CPU 시장의 80%를 점유하고 있는 인텔 프로세서를 기반으로 하였다. 본 논문의 II 장에서는 SSE명령어를 이용한 SIMD 프로그래밍 방법론을 설명하고 HI장에서는 제안하는 SIMD 영상처리 알고리즘의 구현 방법을 설명한다.
40GHz 이다. 알고리즘이 적용되는 이미지는 크기가 4057 X 4048인 대용량의 PCB(Printed Circuit Board) 이미지를 사용하였고 실험에서는 OpenCV 라이브러리 외에 SISD(Single Instruction Single Data) 방식으로 동작하는 최적화된 순차 코드를 작성하여 제안하는 SIMD 방식으로의 프로그램이 SISD 방식에 비해 어느 정도의 속도 향상을 보이는지를 확인하였다. 또한 상용 라이브러리인 MIL, IPP는 내부적으로 SIMD 기반으로 프로그래밍 된 고속처리 라이브러리이기 때문에 제안하는 SIMD 알고리즘과의 '성능 비교에 적합하다.
SIMD 방식으로 이미지를 처리하기 위해서는 기존 영상처리 알고리즘 효과적인 변형이 필요하다. 일반적으로 많이 사용되는 영상처리 알고리즘인 평균 필터, 소벨 필터, 침식과 팽창을 SIMD 방식에 맞는 알고리즘으로 변형하였고 이 과정을 레지스터 이동에 관한 그림으로 설명하였다. 제안하는 SIMD 알고리즘과 SISD 알고리즘의 처리 속도를 비교하기 위해서 최적화된 순차처리 코드와의 수행 속도를 비교 하였고, 실제 적용 가능성을 보이기 위해 상용화된 SIMD 방식의 MIL, IPP 라이브러리와의 처리 속도를 비교를 하였다.
일반적으로 많이 사용되는 영상처리 알고리즘인 평균 필터, 소벨 필터, 침식과 팽창을 SIMD 방식에 맞는 알고리즘으로 변형하였고 이 과정을 레지스터 이동에 관한 그림으로 설명하였다. 제안하는 SIMD 알고리즘과 SISD 알고리즘의 처리 속도를 비교하기 위해서 최적화된 순차처리 코드와의 수행 속도를 비교 하였고, 실제 적용 가능성을 보이기 위해 상용화된 SIMD 방식의 MIL, IPP 라이브러리와의 처리 속도를 비교를 하였다.
위치한 이미지 픽셀에 반환한다. 팽창일 경우 AND 연산이 OR 연산으로 바뀌면 되기 때문에 본 논문에서는 침식 알고리즘만을 설명한다. 알고리즘이 단순하고 똑같은 연산을 여러 데이터에 적용하기 때문에 SIMD로 구현하기에 적합하다.
따라서 표1의 열림과 닫힘 연산의 처리 시간은 제안하는 팽창과 침식 연산을 순차적으로 적용한 후 이 처리 시간을 측정 하였다. 평균 필터와 소벨 수평방향 외곽선 검출의 경우 2가지 방법으로 구현하였기 때문에 본 논문에서의 첫 번째 구현을 4로 두 번째 구현을 B로 표기하였다. 표 1을 보면 2가지 구현 모두 SISD 방식으로 동작하는 최적화된 순차코드와 OpenCV에 비해 평균 필터에서는 2배 이상의 성능 향상을 보였고 소벨 수평 방향 외곽선 검출에서는 12배 이상의 성능 향상을 보였다.
대상 데이터
이는 보다 안정적으로 프로그램을 수행 할 수 있으며 고속의 성능을 보장 받을 수 있기 때문이다. 본 논문의 실험에 사용된 영상 처리 라이브러리는 MIL 8.0, IPP 5.2, OpenCV 1.0이며 이 라이브러리들의 간략한 특징들을 아래에 설명한다.
본 연구에서는 이진 팽창과 침식 연산을 구현하기 위해서 그림 10과 같은 가장 일반적인 3x3 정사각형 형태의 구조요소를 사용하였다.
제안하는 알고리즘의 성능을 평가하기 위해 사용된 CPU는 인텔 코어 2 듀오 데스크탑 프로세서 이며 클럭스피드는 2.40GHz 이다. 알고리즘이 적용되는 이미지는 크기가 4057 X 4048인 대용량의 PCB(Printed Circuit Board) 이미지를 사용하였고 실험에서는 OpenCV 라이브러리 외에 SISD(Single Instruction Single Data) 방식으로 동작하는 최적화된 순차 코드를 작성하여 제안하는 SIMD 방식으로의 프로그램이 SISD 방식에 비해 어느 정도의 속도 향상을 보이는지를 확인하였다.
데이터처리
이렇게 평균 필터의 마스크에 속하는 9개의 픽셀들을 모두 더한 후 9로 나누어 평균값을 구한다. 정확한 연산을 위해 Intrinsics명령어인 _shuffle_ps와 같은 데이터 재배열 명령문을 사용하여 연산하였다. 아래에 이러한 과정을 Step으로 나누어 설명하였다.
이론/모형
본 논문에서는 Intrinsics를 이용하여 영상처리 알고리즘을 구현 하였다. 그 이유는 자동 벡터화 방법을 사용 할 경우 영상처리 알고리즘의 데이터 상관성과 알고리즘의 복잡도를 고려하였을 때 높은 성능을 얻기는 힘들 것이라 판단되기 때문이다.
128비트 크기의 XMM 레지스터에는 16개의 픽셀 밝기 정보를 로드할 수 있으며 이는 한 번의 연산으로 처리 될 수 있다. 본 논문에서는 SSE 을 적용하여 평균 필터, 소벨 수평방향 외곽선 검출, 이진 침식 알고리즘을 Intirinsics 명령어를 사용하여 구현한다. 일반적인 영상처리 알고리즘인 이웃 픽셀과 그 중심 값을 이용하는 한 픽셀 단위의 영상 데이터 접근 방법으로는 SIMD 연산을 구현 할 수 없기 때문에 새로운 알고리즘을 적용하여야 한다.
성능/효과
적용 가능함을 증명하였다. 따라서 영상처리 라이브러리에 의존도를 줄여 어플리케이션의 유연성을 확보할 수 있으며 빠른 수행 속도를 갖는 어플리케이션 제작도 가능함을 보였다. 이를 활용하면 고가의 라이브러리와 추가적인 하드웨어의 구입 없이 영상처리 알고리즘 제작이 가능하기 때문에 실제 어플리케이션의 경쟁력 확보에 도움이 될 수 있을 것이라고 판단된다.
알고리즘이 적용되는 이미지는 크기가 4057 X 4048인 대용량의 PCB(Printed Circuit Board) 이미지를 사용하였고 실험에서는 OpenCV 라이브러리 외에 SISD(Single Instruction Single Data) 방식으로 동작하는 최적화된 순차 코드를 작성하여 제안하는 SIMD 방식으로의 프로그램이 SISD 방식에 비해 어느 정도의 속도 향상을 보이는지를 확인하였다. 또한 상용 라이브러리인 MIL, IPP는 내부적으로 SIMD 기반으로 프로그래밍 된 고속처리 라이브러리이기 때문에 제안하는 SIMD 알고리즘과의 '성능 비교에 적합하다.
또한 실험에 사용된 라이브러리 중 IPP가 가장 높은 성능을 보임을 볼 수 있다. 제안하는 SIMD 알고리즘과 고속 SIMD 이미지 처리 라이브러리의 수행 시간을 비교하였을 때 침식연산에서 MIL 라이브러리에 비해 5배 이상의 가장 큰 성능 향상을 확인 할 수 있었다.
MIL에 사용된 이미지 처리 함수들은 인텔의 MMX, SSE, SSE2를 이용하여 개발 되었다. 또한 오딧세이와같은 영상처리 전용보드를 제공하며 이 보드에 최적화된 ONL(Odyssey Native Library) 을 활용하면 보다 높은 성능향상을 볼 수 있다. MIL의 영상처리 기능은 점대 점(point-to-point), 통계적, 공간적, 형태학적, 계층적 (geometric) 변환 및 고속 푸리에 변환 등의 다양한 기능을 포함하고 있다.
제안하는 SIMD 알고리즘과 고속 SIMD 이미지 처리 라이브러리의 수행 시간을 비교하였을 때 침식연산에서 MIL 라이브러리에 비해 5배 이상의 가장 큰 성능 향상을 확인 할 수 있었다. 또한 제안하는 알고리즘은 IPP 라이브러리와는 큰 성능 차이를 볼 수 없었지만 평균 필터를 제외하고 모두 앞선 성능을 나타냄을 확인 할 수 있었다. 제안하는 알고리즘은 MIL과 IPP의 SIMD 연산에 비하여 평균 1.
본 논문에서 제안하는 SIMD 알고리즘은 SISD 방식보다는 전체적으로 8배의 성능향상을 가져왔으며, SIMD 방식의 고속 라이브러리와는 평균 필터를 제외하고 모두 앞선 수행 시간을 보여 실제적인 영상처리어플리케이션에 적용 가능함을 증명하였다. 따라서 영상처리 라이브러리에 의존도를 줄여 어플리케이션의 유연성을 확보할 수 있으며 빠른 수행 속도를 갖는 어플리케이션 제작도 가능함을 보였다.
위의 알고리즘을 통하여 SSSE3에 새롭게 추가된 명령어를 활용하여 더 빠른 성능을 보이는 소벨 수평 방향 필터제작이 가능함을 보일 수 있었다.
침식과 팽창의 경우 OpenCV에 비해 10배 정도 빠른 성능을 보였으며 최적화된 순차코드에 비해 5배 정도의 성능 향상을 나타냈다. 전체적인 SISD 영상 처리 방법과 비교했을 때 제안하는 SIMD 방식은 평균적으로 8배 이상의 성능향상을 가져왔다.
또한 실험에 사용된 라이브러리 중 IPP가 가장 높은 성능을 보임을 볼 수 있다. 제안하는 SIMD 알고리즘과 고속 SIMD 이미지 처리 라이브러리의 수행 시간을 비교하였을 때 침식연산에서 MIL 라이브러리에 비해 5배 이상의 가장 큰 성능 향상을 확인 할 수 있었다. 또한 제안하는 알고리즘은 IPP 라이브러리와는 큰 성능 차이를 볼 수 없었지만 평균 필터를 제외하고 모두 앞선 성능을 나타냄을 확인 할 수 있었다.
또한 제안하는 알고리즘은 IPP 라이브러리와는 큰 성능 차이를 볼 수 없었지만 평균 필터를 제외하고 모두 앞선 성능을 나타냄을 확인 할 수 있었다. 제안하는 알고리즘은 MIL과 IPP의 SIMD 연산에 비하여 평균 1.4배 정도의 성능 향상을 가져왔다.
표 1을 보면 2가지 구현 모두 SISD 방식으로 동작하는 최적화된 순차코드와 OpenCV에 비해 평균 필터에서는 2배 이상의 성능 향상을 보였고 소벨 수평 방향 외곽선 검출에서는 12배 이상의 성능 향상을 보였다. 침식과 팽창의 경우 OpenCV에 비해 10배 정도 빠른 성능을 보였으며 최적화된 순차코드에 비해 5배 정도의 성능 향상을 나타냈다. 전체적인 SISD 영상 처리 방법과 비교했을 때 제안하는 SIMD 방식은 평균적으로 8배 이상의 성능향상을 가져왔다.
평균 필터와 소벨 수평방향 외곽선 검출의 경우 2가지 방법으로 구현하였기 때문에 본 논문에서의 첫 번째 구현을 4로 두 번째 구현을 B로 표기하였다. 표 1을 보면 2가지 구현 모두 SISD 방식으로 동작하는 최적화된 순차코드와 OpenCV에 비해 평균 필터에서는 2배 이상의 성능 향상을 보였고 소벨 수평 방향 외곽선 검출에서는 12배 이상의 성능 향상을 보였다. 침식과 팽창의 경우 OpenCV에 비해 10배 정도 빠른 성능을 보였으며 최적화된 순차코드에 비해 5배 정도의 성능 향상을 나타냈다.
후속연구
계획이다. 또한 제안하는 알고리즘에 OpenM頂와 MPI를 통한 병렬처리 방법을 추가한 보다 빠른 영상처리 알고리즘을 연구 중이다.
따라서 영상처리 라이브러리에 의존도를 줄여 어플리케이션의 유연성을 확보할 수 있으며 빠른 수행 속도를 갖는 어플리케이션 제작도 가능함을 보였다. 이를 활용하면 고가의 라이브러리와 추가적인 하드웨어의 구입 없이 영상처리 알고리즘 제작이 가능하기 때문에 실제 어플리케이션의 경쟁력 확보에 도움이 될 수 있을 것이라고 판단된다.
향후 평균 필터의 나눗셈 연산 알고리즘의 성능을 개선하고 SSE4의 추가된 기능을 활용하여 수행 시간을향상시킬 계획이다. 또한 제안하는 알고리즘에 OpenM頂와 MPI를 통한 병렬처리 방법을 추가한 보다 빠른 영상처리 알고리즘을 연구 중이다.
참고문헌 (17)
Randle Hyde, WRITE GREAT CODE, No Starch Press, 2004
Intel Corporation, "Intel ® 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture", May, 2007
Intel Corporation, "Intel ® 64 and IA-32 Architectures Software Developer's Manual Volume 2: Basic Architecture", May, 2007
Johan Skoglund and Michael Felsberg, "Fast image processing using SSE2", Proceedings of the SSBA Symposium on Image Analysis, 2005
J´erome Landr'e and Fr'ed'eric Truchetet, "Optimizing signal and image processing applications using Intel libraries", Proceedings of SPIE, vol 6356, 2007
Intel Corporation, "Intel ® 64 and IA-32 Architectures Optimization Reference Manual", May, 2007
Asadollah Shahbahrami. Ben Juurlink, Stamatis Vassiliadis, "Performance Impact of Misaligned Accessesin SIMD Extensions", ProRISC 2006, pp. 334-342, 2006
Matrox, "Matrox Imaging Library 8.0 User Guide", June, 2005
Intel Corporation, "Intel Integrated Performance Primitives for Intel Architecture Reference Manual, Volume2 : Image and Video Processing", January, 2007
G. Conte, S. Tommesani, E Zanichelli, "The long and winding road to high-performance image processing with MMX/SSE", Proceeding of CAMP, pp. 302-342, 2000
Asadollah Shahbahrami Ben Juurlink Stamatis Vassiliadis, "Efficient Vectorization of the FIR Filter", ProRisc 2005, pp. 432-437, 2005
조상현, 박창준, 최흥문 등, "인텔 MMX 기술을 이용한 영상처리 루틴의 고속화", 전자기술연구지, 경북대 공대, vol. 22, pp.154-161, 2001
S. Rakshitn, A. Ghosh, B. Uma Shankar, "Fast mean filtering technique (FMFT)", Pattern Recognition, Vol. 40, No. 3, pp. 890-897, 2007
Timothy Furtak, Jose Nelson Amaral, Robert Niewiadomski, "Using SIMD Registers and Instructions to Enable Instruction-Level Parallelism in Sorting Algorithms", Proceeding of SPAA, June, 2007
Deepu Talla, Lizy Kurian John, Doug Burger, "Bottlenecks in Multimedia Processing with SIMD Style Extensions and Architectural Enhancements", IEEE Transactions on Computer, Vol. 52, No. 8, pp. 1015-1031, August, 2003
Joe H. Wolf III, "Programming Methods for the Pentium ® III Processor's Streaming SIMD Extensions Using the VTune Performance Enhancement Environment", Intel Technology Journal, 1999
※ AI-Helper는 부적절한 답변을 할 수 있습니다.