OpenCL을 사용한 가우스 흐림(하나)
OpenCL
OpenCL(Open Computing Language)은 멀티 코어 CPU 및 GPU 등의 컴퓨팅 리소스에서
이것은 병렬 컴퓨팅에 사용되는 플랫폼 간 API입니다.
wikipedia : OpenCL
고스 모호
고스 모호함은 가중 평활화의 일종이다.
가우스 함수 사용하기 (가우스 핵) 가중
고스 함수는 다음과 같은 공식으로 표시된다.
G\left( x \right) = \dfrac {1}{ \sqrt { 2 \pi \sigma} } \mathrm{e}^{ - \dfrac {x^{2}}{ 2 \sigma^{2} } }
그림은 시계 모양이다.그림은 위키백과에서 인용한 것이다.
고스 모호함은 윤곽의 특징을 남겨 모호하게 한다.
고스 모호함은 고스 내핵의 크기가 크고 표준 편차가 크다는 것이다σ크면 클수록 희미한 효과가 현저하다.
그림은 위키백과에서 인용한 것이다.
고스 모호
위키백과: 고스 함수
고스 모호한 샘플 코드
github가 공개한 것을 테스트하다.
https://github.com/bgaster/opencl-book-samples/tree/master/src/Chapter_8/ImageFilter2D
이 샘플 중 고스 내핵의 크기는 3x3이다.
\frac{1}{16}
\left[
\begin{array}{ccc}
1 & 2 & 1 \\
2 & 4 & 2 \\
1 & 2 & 1
\end{array}
\right]
이 크기에서 희미한 효과는 매우 작기 때문에 이미지를 확대해야만 희미한 효과를 알 수 있다.샘플을 살짝 수정해 지이허브에 맥OS로 실행할 수 있는 샘플을 공개했다.
https://github.com/ohwada/MAC_cpp_Samples/tree/master/OpenCL-ImageFilter2D
가우스 커널의 크기 변경
다음 문장의 5x5를 시험해 보세요.
\frac{1}{273}
\left[
\begin{array}{ccccc}
1 & 4 & 7 & 4 & 1 \\
4 & 16 & 26 & 16 & 4 \\
7 & 26 & 42 & 26 & 7 \\
4 & 16 & 26 & 16 & 4 \\
1 & 4 & 7 & 4 & 1 \\
\end{array}
\right]
Gaussian Smoothing 고스 내핵의 부분을 교체하다.
gaussian_filter.cl
// 3x3
float kernelWeights[9] = { 1.0f, 2.0f, 1.0f,
2.0f, 4.0f, 2.0f,
1.0f, 2.0f, 1.0f };
// 5x5
float kernelWeights[25] =
{ 1.0f, 4.0f, 7.0f, 4.0f, 1.0f,
4.0f, 16.0f, 26.0f, 16.0f, 4.0f,
7.0f, 26.0f, 41.0f, 26.0f, 7.0f,
4.0f, 16.0f, 26.0f, 16.0f, 4.0f,
1.0f, 4.0f, 7.0f, 4.0f, 1.0f };
결과는 3×3과 크게 다르지 않았다더 큰 것이 두 번째에 이어진다.
https://qiita.com/ohwada/items/435afc3df419d29439f3
Reference
이 문제에 관하여(OpenCL을 사용한 가우스 흐림(하나)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ohwada/items/34ca5175ad5aa146d680텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)