CvPipeline - Helsparrow/OpenpnpDocs_KR GitHub Wiki
์๊ฐ
CvPipeline์ Computer Vision Pipeline์ ์ฝ์์ด๋ฉฐ ๊ตฌ์ฑ ์์์์ ๋ณต์กํ ์ปดํจํฐ ๋น์ ์์ ์ ์์ฑํ๊ธฐ ์ํ, ์๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ OpenPnP์์ ํด๋์ค ๋ฐ ์ ํธ๋ฆฌํฐ ๋ชจ์์ ๋๋ค. CvPipeline์ ์ฃผ๋ก ํ๋จ ๋น์ ์์ ์ฌ์ฉ๋์ง๋ง ์ปดํจํฐ ๋น์ ์์ ์ ์ํด ์์คํ ์ ์ฒด์์ ์ ์ ๋ ๋ง์ด ์ฌ์ฉ๋ ๊ฒ์ ๋๋ค.
CvPipeline์ ์ผ๋ถ ๊ธฐ๋ฅ์ ๋ณด์ฌ์ฃผ๋ ์งง์ ๋น๋์ค๋ ๋ค์ ์ฌ์ดํธ์์ ํ์ธํ ์ ์์ต๋๋ค: https://www.youtube.com/watch?v=iUEP0bILAU0
์ด ์์ ๋ฌผ์ ์ฃผ๋ก Karl Lew์ ล imon Fojtลฏ์ FireSight์์ ์๊ฐ์ ๋ฐ์์ต๋๋ค: https://github.com/firepick1/FireSight.
๊ตฌ์ฑ์์
CvPipeline ๋ฌถ์ ์ CvPipeline ๋ฐ CvStage ํด๋์ค, CvPipeline Editor GUI ๊ตฌ์ฑ ์์ ๋ฐ ์ค์ ์ปดํจํฐ ๋น์ ์์ ์ ์ํํ๋ ์ฌ๋ฌ CvStage ๊ตฌํ์ ํฌํจํฉ๋๋ค. ์๋ก์ด CvPipeline์ผ๋ก ์ง์ ์คํํ ์ ์๋ ๋ ๋ฆฝํ ํธ์ง๊ธฐ ํด๋์ค๋ ์์ต๋๋ค.
์์
CvPipeline์ ์ด๋ฏธ์ง์์ ์ํํ ์์ ๋ชฉ๋ก์ ๋๋ค. ์์ ์ ๊ธฐ๋ณธ ๋ฐ ๊ณ ๊ธ ์ปดํจํฐ ๋น์ ์์ ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์์๋๋ก ์ํ๋๋ฉฐ ์ด๋ฏธ์ง๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๊ฐ์ ๊ฒฐ๊ณผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ์ด๋ฌํ ์์ ์ "์คํ ์ด์ง"๋ผ๊ณ ํ๋ฉฐ "์คํ ์ด์ง" ๋ชฉ๋ก์ด ๋ชจ์ฌ "ํ์ดํ๋ผ์ธ"์ ๋ง๋ญ๋๋ค.
์คํ ์ด์ง๋ ๋ํ ๋น์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ด ๋ฐ์ดํฐ๋ ๋ค์ ์คํ ์ด์ง ๋๋ ํ์ดํ๋ผ์ธ์ ํธ์ถ์๊ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
UI
ํ์ดํ๋ผ์ธ ํธ์ง๊ธฐ๋ ํ์ดํ๋ผ์ธ์ด ํ์๋๋ ์ผ์ชฝ๊ณผ ์ ํํ ์คํ ์ด์ง์ ๊ฒฐ๊ณผ๊ฐ ํ์๋๋ ์ค๋ฅธ์ชฝ ๋ ๋ถ๋ถ์ผ๋ก ๋ถํ ๋ฉ๋๋ค.
ํ์ดํ๋ผ์ธ
ํ์ดํ๋ผ์ธ ํธ์ง๊ธฐ์ ์ผ์ชฝ์ ์์ชฝ(ํ์ดํ๋ผ์ธ ๋จ๊ณ)๊ณผ ์๋์ชฝ(์ ํํ ํ์ดํ๋ผ์ธ ๋จ๊ณ์ ์์ฑ) ๋ฐ์ผ๋ก ๋ค์ํ๋ฒ ๋ถํ ๋ฉ๋๋ค. ์์ชฝ์์ ํ์ดํ๋ผ์ธ ์คํ ์ด์ง ์ถ๊ฐ/์ ๊ฑฐ/์์ ์ฌ์ง์ ์ ํ ์ ์๊ณ , ์๋์ชฝ ์ ๋ฐ์์ ์ ํํ ํ์ดํ๋ผ์ธ ๋จ๊ณ์ ๋ํ ์์ฑ์ ํธ์งํ ์ ์์ต๋๋ค.
๊ฐ ํ์ดํ๋ผ์ธ ๋จ๊ณ์๋ ๊ฐ CvPipeline์ ๋ํด ๊ณ ์ ํด์ผ ํ๋ ์ด๋ฆ์ด ์์ผ๋ฏ๋ก ์ดํ ํ์ดํ๋ผ์ธ ๋จ๊ณ์์ ์ด์ ํ์ดํ๋ผ์ธ ๋จ๊ณ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ ์ถ๋ ฅ
ํ์ดํ๋ผ์ธ ํธ์ง๊ธฐ ์ค๋ฅธ์ชฝ์์ ์์ฑ๋ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ฏธ์ง ์์ ๋ง์ฐ์ค๋ฅผ ๋์ผ๋ฉด ๋ง์ฐ์ค ์ปค์์ ํฝ์ ์ขํ์ ํฝ์ ์์์ด RGB ๋ฐ HSB๋ก ํ์๋ฉ๋๋ค.
ํธ์ง๊ธฐ ์คํ
ํ์ดํ๋ผ์ธ "Edit Pipeline" ๋ฒํผ์ ๋ณผ ๋๋ง๋ค OpenPnP ๋ด์์ ํ์ดํ๋ผ์ธ ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ OpenPnP ์ธ๋ถ์์ ํ์ดํ๋ผ์ธ์ ์์ฑํ๊ธฐ ์ํด ๋ ๋ฆฝ ์คํํ์ผ๋ก ์คํํ ์๋ ์์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ Java๊ฐ ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
- ์ฝ์์์ OpenPnP๊ฐ ์ค์น๋ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.
java -cp openpnp-gui-0.0.1-alpha-SNAPSHOT.jar org.openpnp.vision.pipeline.ui.StandaloneEditor
๋ฅผ ์คํํ์ธ์
๋
๋ฆฝ ์คํํ ํ์ดํ๋ผ์ธ ํธ์ง๊ธฐ์๋ ๋ง์ฐ์ค๋ฅผ ํ ๋ฒ ํด๋ฆญํ๊ฑฐ๋ '์' ๋๋ '์๋' ํค ์
๋ ฅ์ผ๋ก imageRead
์คํ
์ด์ง์ ์
๋ ฅ ์ด๋ฏธ์ง๋ฅผ ๋น ๋ฅด๊ฒ ์ ํํ ์ ์๋ ์ผ์ชฝ ํจ๋์ด ํ๋ ๋ ์์ต๋๋ค.
์คํ ์ด์ง ๋ฌธ์
๊ธฐ์ฌ์์ ๋ํ ์ฐธ๊ณ ์ฌํญ
์ฌ๊ธฐ์ ๊ธฐ๋ณธ ์ค๋ช ์๋ฅผ ์ถ๊ฐํ๋ ๋์ ์์ค ์ฝ๋์ ์ฃผ์์ ์ถ๊ฐํ๊ณ pull request๋ฅผ ์ ์ถํ์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด ํธ์ง๊ธฐ์์ ๋ฌธ์๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Blur Gaussian, Stage, Property ์ฃผ์๋ฌธ์ ์ฐธ์กฐํ์ญ์์ค. ์ฌ๊ธฐ์ ์๋ ๊ธฐ์กด ๋ฌธ์๋ ๊ฐ ์คํ ์ด์ง ๊ฐ๋ณ ๋ฌธ์๋ก ์ด๋๋์์ต๋๋ค.
์ ๊ทํ
์ปฌ๋ฌ ์ด๋ฏธ์ง์์ ์ ๊ทํ๋ RGB Max ์๊ณ ๋ฆฌ์ฆ์ ์ํํ์ฌ ๊ทธ๋ฆผ์๋ฅผ ์ ๊ฑฐํ๋ฉฐ ์์ ์ ๋ณด๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
R = R/(R+G+B)
G = G/(R+G+B)
B = B/(R+G+B)
SimpleBlobDetector
์ค์ ๋ก ๊ฒ์์ ์ํ์ ๊ฐ์งํ์ง๋ง, ๋ค๋ฅธ ๊ฒ๋ค์ ์๋ํ์ง ์์ต๋๋ค.
ScriptRun
Example:
var Result = Packages.org.openpnp.vision.pipeline.CvStage.Result;
var result = new Result(pipeline.getWorkingImage(), "I am a model object");
result;