mincook
1
μ΄λ²μ νλ‘κ·Έλ¨ νλλ₯Ό κ°λ°ν΄μΌ νλλ°μβ¦
κΈ°κΈ°λ μλ¦¬μΌ ν΅μ μ ν΅ν΄μ λ°μ΄ν°λ₯Ό κ³μ λ°μμ΅λλ€.
κ·Έλμ κ·Έ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ μ΄μ κ°μ νλ©΄μ λ§λ€μ΄μΌ νκ±°λ μ.

격μ 무λ¬λ νμ μκ³ μ μκΉ ννμ ν΄μ€μΌ νλλ° μ΄λ»κ² ν΄μΌν μ§ λ§λ§νλ€μ.
μΌλ¨ κ²μμμΌλ‘ νμλ₯Ό ν΄λ³΄κΈ΄ νλλ° FillRectangle ν¨μλ₯Ό μ΄μ©ν΄μ κ·Έλ₯ μμ λ€λͺ¨λ‘ ννμ νλ€λ³΄λ μ΄λ―Έμ§μ κ°μ΄ λΆλλ½κ²λ μλκ³ μκΉμ μ΄μ°μ μ° ν κΊΌκ°μ§λ§μβ¦
μΌλ¨ ꡬνν΄μΌ λλ건 μ λ° νλ©΄μ
λλ€. λ°μ΄ν° κ°μ ushort[48, 128]λ‘ μ’ν μ²λΌ λμ΄μ€λ©° κ°μ 0~255λ‘ λ€μ΄μ΅λλ€.
μ λ° νλ©΄μ ꡬννλλ° μ°Έκ³ λ λ§νκ² μμκΉμ?
κ·Έλ¦¬κ³ μΌλ¨ λμΆ©μ΄λΌλ λ§λ€κΈ΄ νλλ°μ . μ΄κ² μ€μκ°μΌλ‘ λ°μ΄ν°κ° λ§μ΄ λΉ¨λ₯΄κ² λ€μ΄μμ μ‘°κΈ λμ΄ κ±Έλ¦¬λ λλμ΄ μλ€μ. μ’ μμ보λ gpu μ°μ°μ μ΄μ©νλ λ°©λ²λ μλ€λλ° κ΅λ΄μ μλ£κ° λ무 μλ€μ. μμ΄λ λ무 μλ κΊΌκ³ μ γ
γ
. νΉμ gpu μ°μ°μ μ΄λ€κ±Έ μμ보면 λ κΉμ?
2κ°μ μ’μμ
μ΄λ―Έμ§ νλ‘μΈμ±μ κ΄λ ¨λ μμμ΄κ³ μ.
μ§λ¬Ένμ λ΄μ©μ GPUνκ³ λ 1λ κ΄κ³ μμ΅λλ€.
GPUκ° νμν κ²½μ°λ λ°μ΄νκ° ν¬κ³ κ³ μ μ°μ°μ΄ νμν κ²½μ°μ
λλ€.
μ§λ¬Έμ λ΄μ©μ μκ·λͺ¨ λ°μ΄νκ° λΉ λ₯΄κ² λ€μ΄μ€λλ°.
κ·Έκ±Έ λΉ λ₯΄κ³ μ΄μκ² κ·Έλ¦¬κ³ μΆμκ±°μμ΅λκΉ?
μ΄λ―Έμ§ νλ‘μΈμ±μΌλ‘ μμ보μ
μΌ νλλ°μ.
μλ§ μκ°ν κ³³μμλ λ΅λ³ μ μλμ¬ κ²λλ€. μλ μ λ¬Έ μμμ΄λΌ
μ§λ¬Έμ΄ ꡬ체μ μ΄μ§ μμΌλ©΄ λ΅λ³ μ μλ¬λ¦½λλ€.
3κ°μ μ’μμ
- μνΌ
- μ리μΌν΅μ
- μ€μκ°μΌλ‘ λ§μ λ°μ΄ν°κ° μμ λ¨
μΌλ¨ 1λ² μ‘°κ±΄μμ gpuνμ©νλ건 λ§μ μ μ½μ΄ λ°λ₯Έλ€λ 건 μμ€κ±° κ°κ³ β¦(wpfλ₯Ό λ€λ£°μ€ μμ λ€λ©΄ wpfκ°μΆν©λλ€)
2λ² μ‘°κ±΄μ 보면 μ리μΌν΅μ μ΄ μμλ€μνΌ μ΄λ²€νΈ κΈ°λ°μ΄μμ΅λκΉ? κ·Έλμ μ΄λ²€νΈμμ κ³Ό λμμ uiμ²λ¦¬λ₯Ό νλ €λ©΄ λΉμ°ν 3λ²μ μν©μΌλ‘ μΈν΄ 보νλ₯μ΄ λ¬΄μ‘°κ±΄ μκΈΈ μ λ°μ μλλ°μ.
μλνλ©΄ data recieve μ΄λ²€νΈμμ μ€λ λκ° μ‘νμλ μνμμ uiλ₯Ό λ―Έμ² λ€ μ²λ¦¬νκΈ°λ μ μ μ΄λ―Έ μλ¦¬μΌ λ²νΌμλ λ°μ΄ν°κ° μμ΄κ³ μλ μν©μ΄κ±°λ μβ¦
μ¬κΈ°μ μ°λ¦¬κ° μΈμ νκ³ λμ΄κ°μΌλ κ², μνΌμμλ λμμ μμ£Ό λ§μ λ°μ΄ν°κ° λΉ λ₯΄κ² ν΅μ μΌλ‘ λμ΄μ¬ κ²½μ°μ κ·Έ λ°μ΄ν°λ₯Ό νκΊΌλ²μ μ²λ¦¬ν μκ° μλ€λκ²λλ€.
(보λ μ΄νΈκ° λμμλ‘ λμ± κ·Έλ¬νμ§λ§, λ§μΌ 보λ μ΄νΈκ° 9600 μ λλΌλ©΄ 보νλ₯μ΄ κ·Έλ κ² μκΈΈκ² κ°μ§ μλ€μ)
μ κ° μ λ° νλ‘κ·Έλ¨μ λ€λ£¨κ±°λ μμ±ν λλ ν΅μ μμ λΆμ uiμ²λ¦¬λΆλ₯Ό λΆλ¦¬νλ λ°©μμ ννλ νΈμ
λλ€.
λ°μ΄ν° μμ μ λ§νμμ΄ νκ³ , uiλ₯Ό μ‘°κΈ λ¦κ² μ²λ¦¬νλκ±°μ£ . (μ€μ λ‘λ νλ©΄ λ°μμ΄ λ리λ€λ λλλ λ³λ‘ μμλ―)
μΌμ’
μ λ²νΌλ₯Ό λ§λ€μ΄λκ³ λ°μ΄ν° μμ νλ©΄ κ·Έ λ²νΌμ λ°μ΄ν°λ₯Ό μμλ‘λλ€.
κ·Έλ¦¬κ³ λμ λ³λμ μμ
μ€λ λλ₯Ό λλ €μ(λ°λ³΅μ£ΌκΈ°κ° λ§€μ° μ§§μ) uiλ₯Ό μ²λ¦¬νλ λ°©μμΌλ‘μβ¦(νκΊΌλ²μ νΉμ λλ μ)
μ νν μΌλ§λ λ§μ λ°μ΄ν°λ₯Ό μΌλ§λ μ§§μ μ£ΌκΈ°λ‘ νλ©΄μ νννλμ§ λͺ¨λ₯΄λ€λ³΄λ λ΅λ³μ΄ λκ° νμ€νμ§κ° μλ€μ©β¦γ
λΆλ μ ν΄κ²°νμκΈΈβ¦
5κ°μ μ’μμ
dimohy
4
μΌλ¨ λ¬Έμ λ₯Ό λ€μμ²λΌ λλ μΌ ν κ² κ°μ΅λλ€.
- λ°μ΄ν°λ₯Ό μ΄λ»κ² νλ©΄μ κ·Έλ¦Όμ²λΌ ννν κ²μΈκ°?
κ·Έλ¦Όμ 보면 λμνλ κ°κ³Ό 격μ κ°μ 1:1 ννμ΄ μλλλ€. κ·Όμ ν κ°μ λ°λΌ κ°κ³΅λλ λ― λ³΄μ΄κ³
μ΄κ²μ νΉμ νλ‘κ·Έλλ° μΈμ΄λ νλ μμν¬μ μ’
μλ κ²μ΄ μλκΈ° λλ¬Έμ
κ΄λ ¨λ μ²λ¦¬λ₯Ό μ‘°μ¬νκ±°λ μμ²νμ
μ κ°κ³΅νλ λ°©λ²μ μ°ΎμμΌ ν κ² κ°μ΅λλ€.
- νλ©΄μ λ°μ΄ν°λ₯Ό κ³ μμΌλ‘ 그리λ λ°©λ²
μνΌμμ Direct2D 그리기λ₯Ό μ¬μ©ν μ μκ² λμμ£Όλ λΌμ΄λΈλ¬λ¦¬ μ°Ύμ μ¬μ©ν μ μμ΅λλ€.
4κ°μ μ’μμ
dimohy
5
1μ λ€μμ κΈ μ²λΌ λΉνΈλ§΅ μ 보λ₯Ό λ°±ν°ν νλ κΈ°λ²μ μ΄μ© + κ°μ°μμ λΈλ¬λ₯Ό μ΄μ©νλ©΄ λ¬μ±ν μ μμ΄ λ³΄μ
λλ€.
4κ°μ μ’μμ
dimohy
6
λλ μ
λ ₯ λ°μ΄ν°κ° μλ§λ μλ ₯ λ°μ΄ν°μΌ κ²μ΄λ―λ‘ β λ±κ³ μ κ³Ό μ μ¬ν λ°μ΄ν° νΉμ±μ΄ μμ κ²μΌλ‘ μΆμΈ‘λλ λ±κ³ μ μ νννλ λ°©λ²μΌλ‘ μ‘°μ¬νμ
λ λ λ― νλ€μ.
2κ°μ μ’μμ
@mincook μ€μ μ¬μ©νμλ μν λ°μ΄ν°λ νλ² μ 곡ν΄μ£Όμλ©΄ μ¬λ°μ κ² κ°μ΅λλ€. 
3κ°μ μ’μμ
dimohy
8
μ€ μ λ κ·Έ μκ° νκ³ μμλλ°β¦ λ°μ΄ν°λ₯Ό μ΄λ»κ² μκ°ν ν΄μΌ κ·Έλ¦Όμ²λΌ μ μ¬νκ² λμ€λ©΄μ μ½κ² λ κΉβ¦ μκ°μ€μ΄μμ΅λλ€. κ·Έκ±Έ νμΈνλ €λ©΄ μν λ°μ΄ν°κ° μμΌλ©΄ μ’μΌλκΉ! ^^
4κ°μ μ’μμ
mincook
9
μ ν¬ μ¬λμ΄ λ³΄κΈ°μ νΈν λ°©μμΌλ‘ νλ©΄ μ΄λ° μμΌλ‘ λ°μ΄ν°κ° λμ΄μ΅λλ€.
ν΄λΉ λΆλΆμ μΌμκ° κ°λ‘ 48κ°, μΈλ‘ 128κ°μ μΌμκ° μλ ν μμ μλ Ήμ μ¬λ €λμμ λμ λͺ¨μ΅μ
λλ€. κ·Έλ¬λ€λ³΄λ μλ Ήμ ννλ‘ λ°μ΄ν°κ° μκΈ°λ€μ. ν΄λΉ μ΄λ―Έμ§μμλ μλ Ήμ΄ μ¬λ €μ§ μμΉ λΆλΆλ§ μ κ° μλΌμ κ°μ Έμ¨κ²λλ€. μ€μ λ‘ xμΆμ΄ 48κ°μ΄λ©°, yμΆμ΄ 128κ° μ
λλ€.
0μΌλ‘ νμλ λΆλΆμ μλ ₯μ μμ λ°κ³ μμ§ μμ, μ¦ λ¬Όκ±΄μ΄λ νμ΄ κ°ν΄μ§μ§ μμ μμΉμ΄λ©° 0 μ΄κ³ΌμΈ λΆλΆλ§ μλ ₯μ΄ κ°ν΄μ§κ³ μλ λΆλΆ μ
λλ€.
μ΄κ±Έ μμ€μμλ ushort[48,128] μ λ°μ΄ν° ννλ‘ λμ΄μ΅λλ€.
μν λ°μ΄ν°λ₯Ό μμΌλ©΄ μ’κ² λ€κ³ νμ
μ μ¬λ¦½λλ€.
3κ°μ μ’μμ
jyje
10
- μ λΌλ©΄ λΈλ¬λ μ΄λ―Έμ§ νμλ‘ C#/OpenCVSharp νΉμ C++/OpenCV or OpenGLμ μΈ κ² κ°μ΅λλ€.
- λ°μ΄ν° λ²νΌμμ μκΉμ΄ νΌμ§λ ν¨κ³Όλ₯Ό μν΄ νν°λ§ 1~2νλ§ νλ©΄ νμν μ°μ°μ λλ κ² κ°μ΅λλ€.
- μΆκ°λ‘ μμ
ν λΉμ ν΄μ€μΌνλ GPU μ°μ°μ΄ νμν μ λλ μλ κ±Έλ‘ λ³΄μ
λλ€!
μλλ C#μμ μ¨λλ₯Ό colormapμΌλ‘ νμν μμ μ
λλ€. μλ ₯μ μλ μμ μ μ¨λλ‘ μκ°νμλ©΄ μ°Έκ³ ν λ§ν κ² κ°μ΅λλ€.
μ‘°κΈ λ¬΄κ±°μ΄ λΌμ΄λΈλ¬λ¦¬μΈλ°, C#μμλ μμνμ/μμμ 리λ₯Ό μ½κ² ν μ μλ βOpenCV for C#β opencvsharpλ₯Ό μ¬μ©ν μ μμ΅λλ€. WinForm/WPFμ νμνλ κ²λ μ΄λ ΅μ§ μμκ±°μμ
λμμ΄ λμΌλ©΄ μ’κ² μ΅λλ€
7κ°μ μ’μμ
mincook
11
@jyje μ λ§ μ κ° λ± μνλ λ΄μ©λ€μ΄λ€μ. μ°Ύμ보λ OpenCVμ λν λ΄μ©λ€λ μ’
μ’
λμ€κ³ λ§μνμ λ°λ‘ λΈλ¬μ νν° ν¨κ³Όλ₯Ό μ¬μ©νλ©΄ λ λ― νλ€μ. μ λ§ κ°μ¬ν©λλ€.
λ€λ₯Έ λ΅λ³ μ£Όμ λͺ¨λ λΆλ€κ»λ κ°μ¬λ립λλ€.
2κ°μ μ’μμ