{"id":7193,"date":"2019-05-31T09:35:05","date_gmt":"2019-05-31T00:35:05","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=7193"},"modified":"2020-05-28T10:24:46","modified_gmt":"2020-05-28T01:24:46","slug":"python%ea%b3%bc-opencv-54-%ec%9d%b4%eb%af%b8%ec%a7%80-%eb%b3%b5%ec%9b%90image-inpainting","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=7193","title":{"rendered":"Python\uacfc OpenCV \u2013 54 : \uc774\ubbf8\uc9c0 \ubcf5\uc6d0(Image Inpainting)"},"content":{"rendered":"<p>\uc774 \uae00\uc758 \uc6d0\ubb38\uc740 https:\/\/opencv-python-tutroals.readthedocs.io\/en\/latest\/py_tutorials\/py_photo\/py_inpainting\/py_inpainting.html \uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uae00\uc5d0\uc11c\ub294 \uc624\ub798\ub41c \uc0ac\uc9c4\uc758 \uc791\uc740 \ud761\uc9d1 \ub4f1\uc744 \uc81c\uac70\ud558\ub294 \ubc29\ubc95\uc778 Inpainting\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf4\uace0, \uc774\ub97c OpenCV\uc758 \uc608\uc81c\ub97c \ud1b5\ud574 \uc0b4\ud3b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc544\ub798\uc758 \uc774\ubbf8\uc9c0\uc758 \uc67c\ucabd\ucc98\ub7fc \uc624\ub798\ub41c \ud6fc\uc190\ub41c \uc0ac\uc9c4\uc5d0\ub294 \uc791\uc740 \ud760\uc9d1\uc774 \uc788\ub294\ub370, \uc774 \ud760\uc9d1\uc744 \uc81c\uac70\ud558\uace0 \uc6d0\ub798\uc758 \uc0ac\uc9c4\uc73c\ub85c \ubcf5\uad6c\ud560 \uc218 \uc5c6\uc744\uae4c\uc694? \ub2e8\uc21c\ud558\uac8c \uc774 \ud760\uc9d0\uc744 \uc0ac\uc9c4\uc5d0\uc11c \uc9c0\uc6b0\ub294 \uac83\ub9cc\uc73c\ub85c\ub294 \ucda9\ubd84\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ub7f0 \uacbd\uc6b0 Image Inpainting\uc774\ub77c\ub294 \uae30\uc220\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uae30\ubcf8 \uc544\uc774\ub514\uc5b4\ub294 \ub2e8\uc21c\ud569\ub2c8\ub2e4. \ud760\uc9d1\uc5d0 \uc704\uce58\ud55c \ud53d\uc140\uc744 \uadf8 \uc774\uc6c3 \ud53d\uc140\uc744 \uac00\uc838\uc640 \uad50\uccb4\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/05\/inpaint_basics.jpg\" alt=\"\" width=\"450\" height=\"168\" class=\"aligncenter size-full wp-image-7196\" \/><\/p>\n<p>\uc774\ub7f0 \ubaa9\uc801\uc744 \uc704\ud574 \uc124\uacc4\ub41c \uc5ec\ub7ec\uac00\uc9c0 \uc54c\uace0\ub9ac\uc998\uc774 \uc788\uc73c\uba70, OpenCV\uc5d0\uc11c\ub294 2\uac00\uc9c0\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774 2\uac00\uc9c0 \ubaa8\ub450 cv2.inpaint() \ud568\uc218\ub97c \ud1b5\ud574 \ud65c\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uccab\ubc88\uc9f8 \uc54c\uace0\ub9ac\uc998\uc740 2004\ub144 Alexandru Telea\uc758 \ub17c\ubb38 \u201cAn Image Inpainting Technique Based on the Fast Marching Method\u201d\uc5d0 \uae30\ubc18\ud569\ub2c8\ub2e4. \uc774 \uc54c\uace0\ub9ac\uc998\uc740 Fast Marching Method\uc5d0 \uae30\ubc18\ud569\ub2c8\ub2e4. \ubcf5\uc6d0(Inpainting)\ud558\uace0\uc790 \ud558\ub294 \uc601\uc5ed\uc5d0 \ub300\ud574 \uc0dd\uac01\ud574 \ubd05\uc2dc\ub2e4. \uc774 \uc54c\uace0\ub9ac\uc998\uc740 \uba3c\uc800 \uc774 \uc601\uc5ed\uc758 \uacbd\uacc4\ub85c\ubd80\ud130 \uc2dc\uc791\ud558\uba70 \uc601\uc5ed \ub0b4\ubd80\ub97c \uc601\uc5ed\uc758 \uc678\uacfd\uc120\ubd80\ud130 \uc2dc\uc791\ud574 \uc810\uc9c4\uc801\uc73c\ub85c \ucc44\uc6c1\ub2c8\ub2e4. \ubcf5\uc6d0\ub420 \uacf3\uc758 \ud53d\uc140 \uc8fc\uc704\uc758 \uc774\uc6c3(\uc778\uadfc)\uc5d0 \uc791\uc740 \ubc94\uc704\uc758 \ud53d\uc140\uc744 \uad6c\ud569\ub2c8\ub2e4. \uad6c\ud574\uc9c4 \ud53d\uc140\ub4e4\uc758 \uc815\uaddc\ud654\ub41c \uac00\uc911\uce58 \ud569\uc73c\ub85c \uacc4\uc0b0\ub418\uc5b4\uc9c4 \uac12\uc73c\ub85c \ubcf5\uc6d0\ub420 \ud53d\uc140\uc774 \uad50\uccb4\ub429\ub2c8\ub2e4. \uac00\uc911\uce58 \uac12\uc758 \uc120\ud0dd\uc740 \ub9e4\uc6b0 \uc911\uc694\ud55c \ubb38\uc81c\uc785\ub2c8\ub2e4. \ubcf5\uc6d0 \uc9c0\uc810\uc5d0 \uac00\uae5d\uac8c \ub193\uc5ec\uc838 \uc788\uc744\uc218\ub85d \ub354 \ub9ce\uc740 \uac00\uc911\uce58\uac12\uc774 \uc8fc\uc5b4\uc9d1\ub2c8\ub2e4. \uc77c\ub2e8 \ud558\ub098\uc758 \ud53d\uc140\uc774 \ubcf5\uc6d0\ub418\uba74, Fast Matching Method\ub97c \uc0ac\uc6a9\ud574 \uac00\uc7a5 \uac00\uae4c\uc6b4 \ub2e4\uc74c \ud53d\uc140\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. \uc774 \uc54c\uace0\ub9ac\uc998\uc740 cv2.INPAINT_TELEA \ud50c\ub798\uadf8\ub97c \uc0ac\uc6a9\ud574 \ud65c\uc131\ud654\ub429\ub2c8\ub2e4.<\/p>\n<p>\ub450\ubc88\uc9f8 \uc54c\uace0\ub9ac\uc998\uc740 2001\ub144\uc758 \ub17c\ubb38\uc778 \u201cNavier-Stokes, Fluid Dynamics, and Image and Video Inpainting\u201d\uc5d0 \uae30\ubc18\ud569\ub2c8\ub2e4. \uc774 \uc54c\uace0\ub9ac\uc998\uc740 \ubd80\ubd84 \ud3b8\ucc28 \ubc29\uc815\uc2dd\uacfc \uc720\uccb4\uc5ed\ud559\uc5d0 \uae30\ubc18\ud569\ub2c8\ub2e4. \uae30\ubc18 \uc774\ub860\uc740 \ud734\ub9ac\uc2a4\ud2f1 \ubc29\uc2dd\uc774\uba70 cv2.INPAINT_NS \ud50c\ub798\uadf8\ub97c \ud65c\uc131\ud654\ud558\uc5ec \uc774 \uc54c\uace0\ub9ac\uc998\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c 2\uac00\uc9c0\uc758 \uc54c\uace0\ub9ac\uc998\uc744 OpenCV\uc758 \ud568\uc218\ub97c \ud1b5\ud574 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uba3c\uc800 \ubcf5\uc6d0\ud558\uace0\uc790 \ud558\ub294 \uc601\uc5ed\uc5d0 \ud574\ub2f9\ud558\ub294 \ud53d\uc140\uc5d0 0\uc774 \uc544\ub2cc \uac12\uc744 \ub2f4\uace0 \uc788\ub294 \ub9c8\uc2a4\ud06c \uc774\ubbf8\uc9c0\uac00 \ud544\uc694\ud55c\ub370, \uc774 \uc774\ubbf8\uc9c0\ub294 \uc785\ub825 \uc774\ubbf8\uc9c0\uc640 \ud06c\uae30\uac00 \ub3d9\uc77c\ud574\uc57c \ud569\ub2c8\ub2e4. \uba3c\uc800 cv2.INPAINT_TELEA \ud504\ub798\uadf8\uc5d0 \ub300\ud55c \uc608\uc81c\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport numpy as np\r\nimport cv2\r\n\r\nimg = cv2.imread('.\/data\/inpainting_input.png')\r\nmask = cv2.imread('.\/data\/inpainting_mask.png',0)\r\n\r\ndst = cv2.inpaint(img,mask,3,cv2.INPAINT_TELEA)\r\n\r\ncv2.imshow('dst',dst)\r\ncv2.waitKey(0)\r\ncv2.destroyAllWindows()\r\n<\/pre>\n<p>cv2.INPAINT_NS\uc5d0 \ub300\ud55c \uc54c\uace0\ub9ac\uc998\uc740 7\ubc88 \ucf54\ub4dc\uc758 \ud568\uc218\uc758 \uc778\uc790\ub97c \ubcc0\uacbd\ud558\uae30\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4. \uc544\ub798\uc758 \uc774\ubbf8\uc9c0\ub294 \ubcf5\uc6d0\ub418\uc5b4\uc9c8 \uc774\ubbf8\uc9c0\uc640 \ub9c8\uc2a4\ud06c \uc774\ubbf8\uc9c0 \uadf8\ub9ac\uace0 2\uac00\uc9c0 \uc54c\uace0\ub9ac\uc998\uc5d0 \uc218\ud589 \uacb0\uacfc\ub97c \ubaa8\ub450 \ud45c\uc2dc\ud55c \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/05\/inpaint_result2.jpg\" alt=\"\" width=\"450\" height=\"337\" class=\"aligncenter size-full wp-image-7201\" \/><\/p>\n<p>4\uac1c\uc758 \uc774\ubbf8\uc9c0 \uc911 \uc88c\ud558\ub2e8\uc758 \uc774\ubbf8\uc9c0\ub294 cv2.INPAINT_TELEA\uc5d0 \ub300\ud55c \uacb0\uacfc\uc774\uba70, \uc6b0\ud558\ub2e8\uc758 \uc774\ubbf8\uc9c0\ub294 cv2.INPAINT_NS\uc758 \uacb0\uacfc \uc785\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc774 \uae00\uc758 \uc6d0\ubb38\uc740 https:\/\/opencv-python-tutroals.readthedocs.io\/en\/latest\/py_tutorials\/py_photo\/py_inpainting\/py_inpainting.html \uc785\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 \uc624\ub798\ub41c \uc0ac\uc9c4\uc758 \uc791\uc740 \ud761\uc9d1 \ub4f1\uc744 \uc81c\uac70\ud558\ub294 \ubc29\ubc95\uc778 Inpainting\uc5d0 \ub300\ud574 \uc0b4\ud3b4\ubcf4\uace0, \uc774\ub97c OpenCV\uc758 \uc608\uc81c\ub97c \ud1b5\ud574 \uc0b4\ud3b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc544\ub798\uc758 \uc774\ubbf8\uc9c0\uc758 \uc67c\ucabd\ucc98\ub7fc \uc624\ub798\ub41c \ud6fc\uc190\ub41c \uc0ac\uc9c4\uc5d0\ub294 \uc791\uc740 \ud760\uc9d1\uc774 \uc788\ub294\ub370, \uc774 \ud760\uc9d1\uc744 \uc81c\uac70\ud558\uace0 \uc6d0\ub798\uc758 \uc0ac\uc9c4\uc73c\ub85c \ubcf5\uad6c\ud560 \uc218 \uc5c6\uc744\uae4c\uc694? \ub2e8\uc21c\ud558\uac8c \uc774 \ud760\uc9d0\uc744 \uc0ac\uc9c4\uc5d0\uc11c \uc9c0\uc6b0\ub294 \uac83\ub9cc\uc73c\ub85c\ub294 \ucda9\ubd84\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ub7f0 \uacbd\uc6b0 Image Inpainting\uc774\ub77c\ub294 \uae30\uc220\uc744 \uc0ac\uc6a9\ud560 \uc218 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=7193\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Python\uacfc OpenCV \u2013 54 : \uc774\ubbf8\uc9c0 \ubcf5\uc6d0(Image Inpainting)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-7193","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/7193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7193"}],"version-history":[{"count":5,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/7193\/revisions"}],"predecessor-version":[{"id":9401,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/7193\/revisions\/9401"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7193"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}