{"id":44043,"date":"2020-04-10T19:58:32","date_gmt":"2020-04-10T10:58:32","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=44043"},"modified":"2020-08-25T13:54:56","modified_gmt":"2020-08-25T04:54:56","slug":"%ec%95%88%eb%93%9c%eb%a1%9c%ec%9d%b4%eb%93%9c%ec%97%90%ec%84%9c-blur%ed%9a%a8%ea%b3%bc-%ea%b5%ac%ed%98%84%ed%95%98%ea%b8%b0-gaussian-blur-stack-blur","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=44043","title":{"rendered":"\uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c blur\ud6a8\uacfc \uad6c\ud604\ud558\uae30 : Gaussian Blur, Stack Blur"},"content":{"rendered":"<h1>\uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c blur\ud6a8\uacfc \uad6c\ud604\ud558\uae30 : Gaussian Blur, Stack Blur<\/h1>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92.jpeg\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92-1024x683.jpeg\" alt=\"\" width=\"750\" height=\"500\" class=\"aligncenter size-large wp-image-44020\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92-1024x683.jpeg 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92-300x200.jpeg 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92-768x512.jpeg 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/photo-1497864979123-ef3595423b92-360x240.jpeg 360w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>\uc774\ubc88 \ud3ec\uc2a4\ud305\uc740 \uc9c0\ub09c\uc2dc\uac04\uc5d0 \ub2e4\ub8ec <a href=\"https:\/\/www.charlezz.com\/?p=44019\">\uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c blur\ud6a8\uacfc \uad6c\ud604\ud558\uae30 : Box Blur<\/a>\uc5d0 \uc774\uc5b4 \ub450\ubc88\uc9f8 \ud3ec\uc2a4\ud305\uc785\ub2c8\ub2e4.<\/p>\n<p>\ubc15\uc2a4\ube14\ub7ec(Box Blur)\ub294 radius\uac12\uc5d0 \ub530\ub77c \uc5f0\uc0b0\ub7c9\uc774 \ub9ce\uc544\uc9c0\ub294 \ubb38\uc81c\uac00 \uc788\uc5c8\uc9c0\ub9cc, \uc5f0\uc0b0\ubc29\ubc95\uc744 \uac1c\uc120\ud558\uc5ec \uc774\ubbf8\uc9c0 \ucc98\ub9ac \uc2dc\uac04 \ubb38\uc81c\ub97c \ud574\uacb0\ud588\ub2e4. \ud558\uc9c0\ub9cc blur\uc758 \ud488\uc9c8\uc740 \uc5ec\uc804\ud788 \uc88b\uc9c0 \ubabb\ud588\uace0, \ud53d\uc140\ud654\ub41c \ub290\ub08c\uc774 \ub9ce\uc774 \ub4e0\ub2e4.<\/p>\n<h2>Gaussian Blur<\/h2>\n<p>\ubc15\uc2a4\ube14\ub7ec\uc640\ub294 \ub2e4\ub974\uac8c, \uac00\uc6b0\uc2dc\uc548 \ube14\ub7ec(Gaussian blur)\ub294 \uc8fc\ubcc0 \ud53d\uc140\ub85c\ubd80\ud130 \ud3c9\uade0\uac12\uc744 \uad6c\ud560 \ub54c \uac00\uc6b0\uc2dc\uc548 \ub9e4\ud2b8\ub9ad\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc8fc\ubcc0 \ud53d\uc140\uc5d0 \uac00\uc911\uce58\ub97c \ub454\ub2e4. \uc774 \ub9e4\ud2b8\ub9ad\uc2a4\ub294 \uc5f0\uc0b0\ud560 \ud53d\uc140\ub85c\ubd80\ud130 \uac00\uae4c\uc6b8\uc218\ub85d \ub192\uc740 \uac00\uc911\uce58\ub97c \uac16\uace0 \uba40\uc5b4\uc9c8\uc218\ub85d \ub0ae\uc740 \uac00\uc911\uce58\ub97c \ub454\ub2e4.<\/p>\n<div id=\"attachment_44044\" style=\"width: 572px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Gauss3D.png\"><img aria-describedby=\"caption-attachment-44044\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Gauss3D.png\" alt=\"gaussian 3d distribution\" width=\"562\" height=\"451\" class=\"wp-image-44044 size-full\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Gauss3D.png 562w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/Gauss3D-300x241.png 300w\" sizes=\"(max-width: 562px) 100vw, 562px\" \/><\/a><\/p>\n<p id=\"caption-attachment-44044\" class=\"wp-caption-text\">[\uadf8\ub9bc1] 3D \uac00\uc6b0\uc2dc\uc548 \ubd84\ud3ec\ub3c4<\/p>\n<\/div>\n<p>\ud558\uc9c0\ub9cc \ubaa8\ubc14\uc77c \ub514\ubc14\uc774\uc2a4\uc5d0\uc11c \uc774\ub7ec\ud55c \uc5f0\uc0b0\uc744 \uc218\ud589\ud558\ub294 \uac83\uc740 \uc5b4\ub835\uace0 \ube44\uc6a9\uc774 \ub9ce\uc774 \ub4dc\ub294 \uc791\uc5c5\uc774\ub2e4. <a href=\"http:\/\/dev.theomader.com\/gaussian-kernel-calculator\/\">\uac00\uc6b0\uc2dc\uc548 \ucee4\ub110 \uacc4\uc0b0\uae30<\/a>\ub97c \ud1b5\ud574 \uacc4\uc0b0\ud558\uae30\uac00 \uc5bc\ub9c8\ub098 \ubcf5\uc7a1\ud55c\uc9c0 \uac04\uc811\uc801\uc73c\ub85c\ub098\ub9c8 \ub290\uaef4\ubcfc \uc218 \uc788\ub2e4.<\/p>\n<h4 class=\"api-title\" id=\"scriptintrinsicblur\">ScriptIntrinsicBlur<\/h4>\n<p>\uac00\uc6b0\uc2dc\uc548 \ub9e4\ud2b8\ub9ad\uc2a4\ub97c \ub9cc\ub4dc\ub294 \uac83\uc740 \ube44\uc6a9\uc774 \ud070\uc791\uc5c5\uc774\uace0 \uc5b4\ub835\uae30 \ub54c\ubb38\uc778\uc9c0, Android SDK\uc5d0\uc11c\ub294 \uac00\uc6b0\uc2dc\uc548 \ub9e4\ud2b8\ub9ad\uc2a4\ub97c RenderScript\ub85c \uad6c\ud604\ud560 \uc218 \uc788\ub294 <a href=\"https:\/\/developer.android.com\/reference\/android\/renderscript\/ScriptIntrinsicBlur\">ScriptInstrinsicBlur<\/a>\ub97c \uc81c\uacf5\ud55c\ub2e4.<\/p>\n<p>ScriptInstrinsicBlur\ub294 Android\uc5d0\uc11c \ud604\uc2e4\uc801\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uac83 \uc911\u00a0 \uac00\uc7a5 \uc2dc\uac01\uc801\uc73c\ub85c \ud488\uc9c8\uc774 \uc88b\uace0 \ube60\ub974\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \uba40\ud2f0\uc4f0\ub808\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec C\ub85c \uad6c\ud604\ud55c \uac83\ubcf4\ub2e4 2~3\ubc30 \ube60\ub974\uace0, \uc790\ubc14\ub85c \uad6c\ud604\ud55c \uac83\ubcf4\ub2e4 10\ubc30 \ube60\ub974\ub2e4\uace0 \uad6c\uae00\uc740 \uc8fc\uc7a5\ud55c\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<div style=\"width: 470px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" alt=\"Renderscript optimizations chart\" src=\"https:\/\/2.bp.blogspot.com\/-veE2yLwl53c\/Uh5G4s6GDlI\/AAAAAAAACf8\/M3XTWKO4pQY\/s1600\/renderscript_instrinsics_performance.png\" width=\"460\" height=\"320\" \/><\/p>\n<p class=\"wp-caption-text\">\ucd9c\ucc98 : https:\/\/android-developers.googleblog.com\/2013\/08\/renderscript-intrinsics.html<\/p>\n<\/div>\n<p>\ud558\uc9c0\ub9cc \uc774\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c \uba87\uac00\uc9c0 \uc81c\uc57d\uc870\uac74\uc774 \uc788\ub2e4.<\/p>\n<h5>\uc81c\uc57d \uc870\uac74<\/h5>\n<ul>\n<li>API 17\uc774\uc0c1<\/li>\n<li>RenderScript\uc0ac\uc6a9<\/li>\n<li>radius\ubc94\uc704 0~25<\/li>\n<\/ul>\n<p>\ub80c\ub354 \uc2a4\ud06c\ub9bd\ud2b8\ub294 GPU, ISP \ub4f1\uc744 \uc0ac\uc6a9\ud558\ub294 \uae30\uae30\uc5d0\uc11c \ub9e4\uc6b0 \uc815\uad50\ud558\uac8c \uc791\ub3d9\ud558\uba70, \uc548\ub4dc\ub85c\uc774\ub4dc 2.2 \ubc84\uc804\uae4c\uc9c0 \uc9c0\uc6d0\ud558\ub294 <a href=\"https:\/\/developer.android.com\/guide\/topics\/renderscript\/compute.html#access-rs-apis\">v8 support \ub77c\uc774\ube0c\ub7ec\ub9ac<\/a>\ub3c4 \uc81c\uacf5\ud558\uace0 \uc788\ub2e4. \ud558\uc9c0\ub9cc \uc548\ub4dc\ub85c\uc774\ub4dc\ub294 \ud558\ub4dc\uc6e8\uc5b4 \ubc0f \ub4dc\ub77c\uc774\ubc84\uc758 \ud30c\ud3b8\ud654\ub85c \uc778\ud574 \uba87\uba87 \uae30\uae30\uc5d0\uc11c\ub294 \ub80c\ub354\uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc81c\ub300\ub85c \ub3d9\uc791\ud558\uc9c0 \uc54a\uc744\uc218\ub3c4 \uc788\uc73c\ub2c8 \ub9f9\ubaa9\uc801\uc73c\ub85c \uc0ac\uc6a9\ud574\uc11c\ub294 \uc548\ub41c\ub2e4.<\/p>\n<p>ScriptInstrinsicBlur\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"lang:null decode:true lang:\">\/\/\ub80c\ub354\uc2a4\ud06c\ub9bd\ud2b8 \uc0dd\uc131\r\nRenderScript rs = RenderScript.create(context);\r\n\r\n\/\/bitmapOriginal\uc744 radius 8\ub85c \ube14\ub7ec\ud55c\ub2e4.\r\nfinal Allocation input = Allocation.createFromBitmap(rs, bitmapOriginal); \/\/use this constructor for best performance, because it uses USAGE_SHARED mode which reuses memory\r\nfinal Allocation output = Allocation.createTyped(rs, input.getType());\r\nfinal ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));\r\nscript.setRadius(8f);\r\nscript.setInput(input);\r\nscript.forEach(output);\r\noutput.copyTo(bitmapOriginal);<\/pre>\n<p>ScriptInstrinsicBlur\uc640 \uc774\uc804 \ud3ec\uc2a4\ud305\uc5d0\uc11c \ub2e4\ub8ec \ucd5c\uc801\ud654\ub41c BoxBlur\uc640 \uacb0\uacfc\ubb3c\uc744 \ube44\uad50\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/gaussian_vs_boxblur.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/gaussian_vs_boxblur-1024x383.png\" alt=\"\" width=\"750\" height=\"281\" class=\"aligncenter size-large wp-image-44047\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/gaussian_vs_boxblur-1024x383.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/gaussian_vs_boxblur-300x112.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/gaussian_vs_boxblur-768x287.png 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>ScriptInstrinsicBlur\ub85c \ucc98\ub9ac \ud588\uc744\ub54c \ud53d\uc140\ud654\ub3c4 \ub0ae\uace0 \uc774\ubbf8\uc9c0 \ucc98\ub9ac \uc2dc\uac04\ub3c4 \ub9e4\uc6b0 \ube60\ub978\uac83\uc744 \uc54c \uc218 \uc788\ub2e4.<\/p>\n<h2>StackBlur<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/blindedcyclops.neocities.org\/StackBlur01.png\" alt=\"\" \/><\/p>\n<p>\uc2a4\ud0dd\ube14\ub7ec\ub294(StackBlur) \ube60\ub978 \ube14\ub7ec\ucc98\ub9ac\uac00 \uac00\ub2a5\ud55c \uc54c\uace0\ub9ac\uc998\uc73c\ub85c Quasimondo\ub85c \uc54c\ub824\uc9c4 <a href=\"http:\/\/quasimondo.com\/\">Mario Klingeman<\/a>\uc5d0 \uc758\ud574 \uac1c\ubc1c\ub418\uc5c8\ub2e4. \ub300\ubd80\ubd84\uc758 \uc0c1\ud669\uc5d0\uc11c \uac00\uc6b0\uc2dc\uc548 \ube14\ub7ec\uc640 \ucda9\ubd84\ud788 \ube44\uc2b7\ud55c \ud6a8\uacfc\ub97c \ub0b4\uba74\uc11c\ub3c4 \uad49\uc7a5\ud788 \ube60\ub978 \uc54c\uace0\ub9ac\uc998\uc774\ub2e4.\u00a0<\/p>\n<h3>StackBlur \uc54c\uace0\ub9ac\uc998 \ub3d9\uc791 \ubc29\uc2dd<\/h3>\n<p>\uc774\ubbf8\uc9c0\uc758 \uac00\ub85c \ud53d\uc140\uc744 w, radius\ub97c r\uc774\ub77c\uace0 \uac00\uc815\ud558\uc790. \ubaa8\ub4e0 \ud53d\uc140 P(x,y) \uc5d0 \ub300\ud574\uc11c \uc804\uccb4 \uac00\ub85c\ud53d\uc140\uc5d0 \ub300\ud55c \ud3c9\uade0\uac12\uc740 r = w\/2\uac00 \ub41c\ub2e4.<\/p>\n<table style=\"width: 82.3691%; border-collapse: collapse; border-style: solid; border-color: #000000; height: 53px;\" height=\"83\">\n<tbody>\n<tr style=\"height: 53px;\">\n<td style=\"width: 14.2857%; border-style: solid; border-color: #000000; height: 53px;\">P(x-r, y)<\/td>\n<td style=\"width: 14.2857%; border-style: solid; border-color: #000000; height: 53px;\"><\/td>\n<td style=\"width: 14.2857%; border-style: solid; border-color: #000000; height: 53px;\"><\/td>\n<td style=\"width: 14.2857%; border-style: solid; border-color: #000000; height: 53px;\">P(x,y)<\/td>\n<td style=\"width: 14.2857%; border-style: solid; border-color: #000000; height: 53px;\"><\/td>\n<td style=\"width: 14.2857%; border-style: solid; border-color: #000000; height: 53px;\"><\/td>\n<td style=\"width: 14.2857%; border-style: solid; border-color: #000000; height: 53px;\">P(x+r, y)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>(\ube14\ub7ec\ub97c \ub300\uce6d\uc73c\ub85c \ud558\ub824\uba74 w\uac00 \ud640\uc218\uac70\ub098 \uc591 \ub05d\uc5d0 \ubc18\ucabd\uc9dc\ub9ac \ud53d\uc140\uc744 \ucd94\uac00\ud574\uc57c \ud558\uc9c0\ub9cc \uc5ec\uae30\uc11c\ub294 w\ub9cc\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.)<\/p>\n<p>\ube14\ub7ec\ub41c \ud53d\uc140\uc744 \uc5bb\uae30 \uc704\ud574\uc11c \uc67c\ucabd\uc5d0 \uc788\ub294 P(x-r,y) \ubd80\ud130 P(x+r, y)\uae4c\uc9c0 \ub354\ud558\uace0 w\ub85c \ub098\ub220\uc90d\ub2c8\ub2e4.\u00a0<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0-avddgaipyfkoo3pa.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0-avddgaipyfkoo3pa-300x165.png\" alt=\"\" width=\"300\" height=\"165\" class=\"aligncenter size-medium wp-image-44481\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0-avddgaipyfkoo3pa-300x165.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0-avddgaipyfkoo3pa.png 434w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>\uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub294 \ub2e8\uc21c\ud55c \ubc29\ubc95\uc740 \uac01 \ud53d\uc140\uc5d0 \ub300\ud574 \ucc98\uc74c\ubd80\ud130 \ud569\uc0b0\uc744 \ud558\ub294\uac83\uc774\ub2e4. \uc989, \uac01 \ud53d\uc140\ub9c8\ub2e4 w\ud53d\uc140\uc744 \ucc3e\uc544\uc57c\ud55c\ub2e4. \ub9cc\uc57d n\uac1c\uc758 \ud53d\uc140\uc744 \uac16\ub294 \uc774\ubbf8\uc9c0(n = width * height)\ub77c\uba74, n * w \ub9cc\ud07c\uc758 \uc5f0\uc0b0\uc744 \ud574\uc57c\ud55c\ub2e4. \ucef4\ud4e8\ud130 \uacfc\ud559 \ubd84\uc57c\uc5d0\uc11c\ub294 \uc2dc\uac04\ubcf5\uc7a1\ub3c4\uc5d0 \ub300\ud574 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Big_O_notation\">Big O \ud45c\uae30\ubc95<\/a>\uc774\ub77c\ub294 \uac83\uc73c\ub85c \ud45c\uae30\ub97c \ud558\ub294\ub370, \uc774 \uacbd\uc6b0 O(nw)\uac00 \ub41c\ub2e4. n\uacfc w\ub294 \uc11c\ub85c \uacf1\ud558\uae30 \ub54c\ubb38\uc5d0 \ub450 \uac12\uc774 \ub3d9\uc2dc\uc5d0 \ub9e4\uc6b0 \ub290\ub824\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n<p>\ub2e8\uc21c\ud55c \uc815\uc0ac\uac01\ud615 \uc774\ubbf8\uc9c0\ub97c \ube14\ub7ec\ucc98\ub9ac \ud55c\ub2e4\uace0 \ud560 \ub54c Big O\ub294 O(nw^2)\uc774 \ub41c\ub2e4. \uc608\ub97c\ub4e4\uc5b4 w\uac00 100\uc774\uba74 \ub2e8\uc21c \uacc4\uc0b0\ud574\ub3c4 10000\ubc88 \uc774\uc0c1\uc740 \uac01 \ud53d\uc140\uc5d0 \ub300\ud574\uc11c \ud0d0\uc0c9\uc774 \ud544\uc694\ud558\ub2e4. (OMG..)<\/p>\n<p><iframe loading=\"lazy\" width=\"240\" height=\"227\" src=\"https:\/\/giphy.com\/embed\/ZdCJ4G17h7lIsrYfLs\" frameborder=\"0\" class=\"giphy-embed\" allowfullscreen=\"allowfullscreen\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><\/iframe><\/p>\n<p><a href=\"https:\/\/giphy.com\/gifs\/oh-my-god-ZdCJ4G17h7lIsrYfLs\"><\/a>\ub2e4\ud589\ud788\ub3c4 \uc774\ub97c \ucd5c\uc801\ud654\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc774 \uc874\uc7ac\ud55c\ub2e4.\u00a0<\/p>\n<p>\uba3c\uc800, \ud55c\ubc88\uc5d0 2D \ube14\ub7ec\ub9c1\uc744 \uc218\ud589\ud558\ub294 \ub300\uc2e0 \ub450\ubc88(2Pass) \ub098\ub204\uc5b4\uc11c \uc791\uc5c5\uc744 \uc218\ud589\ud55c\ub2e4. \ud55c\ubc88\uc740 \uac00\ub85c\ub85c \ud55c\ubc88\uc740 \uc138\ub85c\ub85c \uc9c4\ud589\ud55c\ub2e4. \uc774\ub7ec\ud55c \ubc29\ubc95\uc73c\ub85c \uc9c4\ud589\ud558\uba74 \ub450\ubc88\uc9f8 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \ub54c\ub294 \uac01 \ud53d\uc140\uc740 \uc774\ubbf8 \uac00\ub85c\ubc29\ud5a5\uc73c\ub85c \ud3c9\uade0\uac12\uc774 \uacc4\uc0b0\ub418\uc5b4\uc788\ub2e4. \uc57d\uac04\uc758 \ubc18\uc62c\ub9bc \uc624\ub958\uac00 \ucd94\uac00\ub418\uae34 \ud558\ub294\ub370 \uc2e4\uc81c\ub85c\ub294 \uac70\uc758 \uc601\ud5a5\uc744 \ubbf8\uce58\uc9c0 \uc54a\ub294\ub2e4. 2Pass\ub85c \ub098\ub220\uc11c \uc791\uc5c5\ud558\uae30 \ub54c\ubb38\uc5d0 \uc2dc\uac04\ubcf5\uc7a1\ub3c4\ub294 O(nw)\uac00 \ub41c\ub2e4. (\uc2e4\uc81c\ub85c\ub294 O(2nw)\uc774\uc9c0\ub9cc Big O \ud45c\uae30\uc5d0\uc11c \uc0c1\uc218\ud56d\uc740 \ubb34\uc2dc\ud55c\ub2e4.)\u00a0<\/p>\n<p>\uc790 \uc870\uae08\ub9cc \ub354 \ud798\uc744 \ub0b4\ubcf4\uc790, \uc6b0\ub9b0 \ub354 \ube60\ub978 \uacc4\uc0b0\uc744 \ud560 \uc218 \uc788\ub2e4! !!<\/p>\n<p><iframe loading=\"lazy\" width=\"240\" height=\"150\" src=\"https:\/\/giphy.com\/embed\/yoJC2K6rCzwNY2EngA\" frameborder=\"0\" class=\"giphy-embed\" allowfullscreen=\"allowfullscreen\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><\/iframe><\/p>\n<p>\ube14\ub7ec(\ud3c9\uade0\uac12)\ub97c \uc801\uc6a9\ud560 \ud53d\uc140\uc744 P1, \uadf8 \ub2e4\uc74c \uacc4\uc0b0\ud560 \uc778\uc811\ud55c \ud53d\uc140\uc740 P2\ub77c\uace0 \uac00\uc815\ud558\uc790. P1\uacfc P2\uc758 \ud3c9\uade0\uac12\uc744 \uad6c\ud558\uae30 \uc704\ud574 \uc778\uc811\ud55c \uac00\ub85c \ud53d\uc140\ub4e4\uc744 \ub354\ud55c\ub2e4\uace0 \uc0dd\uac01\ud574\ubcf4\uc790. <span>\uc774 \ub450 \ud569\uacc4\ub97c \uad6c\ud558\uae30 \uc704\ud574 \ub354\ud574\uc9c4 \ud53d\uc140\ub4e4\uc740 \uac70\uc758 \ub3d9\uc77c\ud558\ub2e4. \uc720\uc77c\ud55c \ucc28\uc774\uc810\uc740 \uc67c\ucabd \ub05d\uc5d0 \ud53d\uc140\ud558\ub098\uc640 \uc624\ub978\ucabd \ub05d\uc758 \ud53d\uc140 \ud558\ub098\ub2e4. \ub2e4\uc2dc \ub9d0\ud574\uc11c \ud55c \ud53d\uc140\uc758 \ud3c9\uade0\uac12\uc744 \uad6c\ud558\uae30 \uc704\ud55c \ud569\uacc4\ub97c \uc54c\uba74 \uac00\uc7a5 \uc67c\ucabd \ud53d\uc140\uc744 \ube7c\uace0 \uac00\uc7a5 \uc624\ub978\ucabd \ud53d\uc140\uc744 \ucd94\uac00\ud558\uc5ec \uadf8 \ub2e4\uc74c \ud53d\uc140\uc758 \ud3c9\uade0\uac12\uc744 \uad6c\ud560 \uc218 \uc788\ub294 \uac83\uc774\ub2e4. (\ubaa8\ub4e0 \ud53d\uc140\uc744 \ub2e4 \ub354\ud558\uace0 \ub098\ub20c\ud544\uc694\uac00 \uc5c6\ub2e4, \uadf8\uc800 \ud558\ub098 \ube7c\uace0 \ud558\ub098 \ub354\ud560\ubfd0&#8230;)<\/span><\/p>\n<table style=\"width: 104.156%; border-collapse: collapse; border-style: solid; border-color: #000000; height: 119px;\">\n<tbody>\n<tr style=\"height: 53px;\">\n<td style=\"width: 11.7968%; border-style: solid; border-color: #000000; height: 65px; background-color: #ffeded;\">P(x-r, y)<\/td>\n<td style=\"width: 13.7773%; border-style: solid; border-color: #000000; height: 65px; background-color: #ffeded;\">P(x-r+1,y)<\/td>\n<td style=\"width: 11.3117%; border-style: solid; border-color: #000000; height: 65px; background-color: #ffeded;\"><\/td>\n<td style=\"width: 12.3935%; border-style: solid; border-color: #000000; height: 65px; background-color: #ffeded;\">P(x,y)<\/td>\n<td style=\"width: 11.2433%; border-style: solid; border-color: #000000; height: 65px; background-color: #ffeded;\"><\/td>\n<td style=\"width: 11.6403%; border-style: solid; border-color: #000000; height: 65px; background-color: #ffeded;\"><\/td>\n<td style=\"width: 12.9629%; border-style: solid; border-color: #000000; height: 65px; background-color: #ffeded;\">P(x+r, y)<\/td>\n<td style=\"width: 93.2841%; border-style: solid; border-color: #000000; height: 65px;\"><\/td>\n<\/tr>\n<tr style=\"height: 54px;\">\n<td style=\"width: 11.7968%; border-style: solid; border-color: #000000; height: 54px;\"><\/td>\n<td style=\"width: 13.7773%; border-style: solid; border-color: #000000; height: 54px; background-color: #ffeded;\">P(x-r+1, y)<\/td>\n<td style=\"width: 11.3117%; border-style: solid; border-color: #000000; height: 54px; background-color: #ffeded;\"><\/td>\n<td style=\"width: 12.3935%; border-style: solid; border-color: #000000; height: 54px; background-color: #ffeded;\">P(x,y)<\/td>\n<td style=\"width: 11.2433%; border-style: solid; border-color: #000000; height: 54px; background-color: #ffeded;\"><\/td>\n<td style=\"width: 11.6403%; border-style: solid; border-color: #000000; height: 54px; background-color: #ffeded;\"><\/td>\n<td style=\"width: 12.9629%; border-style: solid; border-color: #000000; height: 54px; background-color: #ffeded;\">P(x+r, y)<\/td>\n<td style=\"width: 93.2841%; border-style: solid; border-color: #000000; height: 54px; background-color: #ffeded;\">P(x+r+1, y)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0mgm1-fjp4yuxkbfz.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0mgm1-fjp4yuxkbfz-1024x770.png\" alt=\"\" width=\"750\" height=\"564\" class=\"aligncenter wp-image-44484 size-large\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0mgm1-fjp4yuxkbfz.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0mgm1-fjp4yuxkbfz-300x226.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0mgm1-fjp4yuxkbfz-768x578.png 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><br \/>\n\ud53d\uc140\ub4e4\uc758 \ud3c9\uade0\uac12\uc744 \uad6c\ud560 \ub54c \uc774\uc804 \ud53d\uc140\uc758 \ud569\uc0b0\uc73c\ub85c\ubd80\ud130 \uac00\uc7a5 \uc67c\ucabd\uc758 \ud53d\uc140\uc744 \ube7c\uae30 \uc704\ud574 Queue(\ud050)\uc5d0 \uc778\uc811 \ud53d\uc140\ub4e4\uc744 \ubcf4\uad00\ud558\uac8c \ub41c\ub2e4. \uc704\uc758 \uc608\uc81c \uc774\ubbf8\uc9c0\ub97c \ud1b5\ud574 \uc124\uba85\ud558\uba74 P(x-r,y) \ubd80\ud130 \uc21c\uc11c\ub300\ub85c P(x+r,y)\uae4c\uc9c0 \ud53d\uc140\ub4e4\uc774 \ud050\uc5d0 \ub4e4\uc5b4\uac00 \uc788\uc73c\uba70, P(x+1, y)\uc758 \ud3c9\uade0\uac12\uc744 \uad6c\ud560 \ub54c\ub294 \uc774\uc804 \ud53d\uc140 P(x,y)\uc758 \ud569\uc0b0\uc5d0\uc11c P(x-r,y)\ub97c \ube7c\uae30 \uc704\ud574\uc11c \ud050\uc5d0 \uc788\ub358 \uac12 P(x-r,y)\ub97c \uaebc\ub0b8\ub2e4. \uadf8\ub9ac\uace0 P(x+r+1,y)\ub97c \ucd94\uac00\ub85c \ub354\ud55c\uace0 \uc774 \ud53d\uc140\uc744 \ud050\uc5d0 \ub123\ub294\ub2e4. \ub9cc\uc57d \ud55c\uc904\uc5d0 100\ud53d\uc140\uc744 \ud569\uc0b0\ud574\uc57c \ud55c\ub2e4\uace0 \uac00\uc815\ud558\uba74 \ud050\uc5d0\uc11c\ub294 98\uac1c\uc758 \ud53d\uc140\uc744 \uc800\uc7a5\ud558\uac8c \ub420 \uac83\uc774\ub2e4.<\/p>\n<p>\ud53d\uc140\uc744 \ud558\ub098 \ub354\ud558\uace0 \ube7c\uae30\ub9cc \ud558\uba74 \ub418\uae30 \ub54c\ubb38\uc5d0 \uc544\ubb34\ub9ac \ub9ce\uc740 \ud53d\uc140\uc218\ub77c\ub3c4 \ubb38\uc81c\uac00 \ub418\uc9c0 \uc54a\ub294\ub2e4. \uc989 \uc5b4\ub5a0\ud55c \ud070 \uc774\ubbf8\uc9c0\ub3c4 \uc2a4\ud0dd\ube14\ub7ec \uc54c\uace0\ub9ac\uc998\uc758 \uc131\ub2a5\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce58\uc9c0 \uc54a\ub294\ub2e4. \uc5f4\uacfc \ud589\uc5d0 \ub300\ud55c \ub9e4 \uccab\ubc88\uc9f8 \ud53d\uc140\uc758 \ucd08\uae30\uc124\uc815\ub3c4 \uc788\uc9c0\ub9cc, \uc54c\uace0\ub9ac\uc998\uc758 \uc2dc\uac04 \ubcf5\uc7a1\ub3c4\ub294 O(n+kw)\ub85c \uc904\uc77c\uc218 \uc788\ub2e4. (k = width + height)<\/p>\n<p>\uc2a4\ud0dd\ube14\ub7ec \uc54c\uace0\ub9ac\uc998\uc740 \uc774\ub7ec\ud55c \ud569\uc0b0 \uaf3c\uc218\ub97c \uc801\uc6a9\ud558\uace0 \uadf8\uc5d0 \ub530\ub978 \uacb0\uacfc\ub85c \uc774\ubbf8\uc9c0\uc758 \uc911\uc2ec\ubd80\uc5d0 \uc788\ub294 \ud53d\uc140\uc774 \uac00\uc7a5\uc790\ub9ac\uc5d0 \uc788\ub294 \ud53d\uc140\ubcf4\ub2e4 \ub354 \ub9ce\uc774 \ucc38\uc870 \ub41c\ub2e4. \uadf8\ub798\uc11c \uc774\ub97c \uadf8\ub798\ud504\ub85c \uac00\uc2dc\ud654 \ud588\uc744 \ub54c \ub2e4\uc74c\uacfc \uac19\uc740 \ud53c\ub77c\ubbf8\ub4dc \ud615\ud0dc\uac00 \ub41c\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0hpn0ble1s6shkife.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0hpn0ble1s6shkife-1024x543.png\" alt=\"\" width=\"750\" height=\"398\" class=\"aligncenter wp-image-44483 size-large\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0hpn0ble1s6shkife.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0hpn0ble1s6shkife-300x159.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0hpn0ble1s6shkife-768x407.png 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>StackBlur \uc54c\uace0\ub9ac\uc998\uc73c\ub85c \ube14\ub7ec \ucc98\ub9ac\ub97c \ud55c \uacb0\uacfc\ub97c \ud655\uc778\ud558\uc790.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0mgm1-fjp4yuxkbfz.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0mgm1-fjp4yuxkbfz-1024x770.png\" alt=\"\" width=\"750\" height=\"564\" class=\"aligncenter wp-image-44484 size-large\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0mgm1-fjp4yuxkbfz.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0mgm1-fjp4yuxkbfz-300x226.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/04\/www.charlezz.com-blur-gaussian-blur-stack-blur-0mgm1-fjp4yuxkbfz-768x578.png 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>\ub2e4\ub978 \uc54c\uace0\ub9ac\uc998\uacfc \ube44\uad50\ud558\uc5ec \ud488\uc9c8\ub3c4 \ud6cc\ub96d\ud558\uace0 \ubb34\uc5c7\ubcf4\ub2e4 \uc774\ubbf8\uc9c0 \ud504\ub85c\uc138\uc2f1 \uc2dc\uac04\uc774 \uad49\uc7a5\ud788 \uc9e7\uc740 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>\uc0d8\ud50c \uc571 \ubc0f Gaussian blur, Stack blur \ucf54\ub4dc\ub294 <a href=\"https:\/\/github.com\/Charlezz\/BlurSample\">github<\/a>\uc5d0\uc11c \ud655\uc778 \ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Blur\uc758 \uc131\ub2a5\uc744 \ub354 \uac1c\uc120 \ud558\uace0 \uc2f6\ub2e4\uba74, <a href=\"https:\/\/www.charlezz.com\/?p=44065\">\uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c blur\ud6a8\uacfc \uad6c\ud604\ud558\uae30 : \uc131\ub2a5 \uac1c\uc120 \ubc0f LiveBlur \uad6c\ud604\ud558\uae30<\/a> \ub97c \ucc38\uc870\ud558\uc138\uc694.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c blur\ud6a8\uacfc \uad6c\ud604\ud558\uae30 : Gaussian Blur, Stack Blur \uc774\ubc88 \ud3ec\uc2a4\ud305\uc740 \uc9c0\ub09c\uc2dc\uac04\uc5d0 \ub2e4\ub8ec \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c blur\ud6a8\uacfc \uad6c\ud604\ud558\uae30 : Box Blur\uc5d0 \uc774\uc5b4 \ub450\ubc88\uc9f8 \ud3ec\uc2a4\ud305\uc785\ub2c8\ub2e4. \ubc15\uc2a4\ube14\ub7ec(Box Blur)\ub294 radius\uac12\uc5d0 \ub530\ub77c \uc5f0\uc0b0\ub7c9\uc774 \ub9ce\uc544\uc9c0\ub294 \ubb38\uc81c\uac00 \uc788\uc5c8\uc9c0\ub9cc, \uc5f0\uc0b0\ubc29\ubc95\uc744 \uac1c\uc120\ud558\uc5ec \uc774\ubbf8\uc9c0 \ucc98\ub9ac \uc2dc\uac04 \ubb38\uc81c\ub97c \ud574\uacb0\ud588\ub2e4. \ud558\uc9c0\ub9cc blur\uc758 \ud488\uc9c8\uc740 \uc5ec\uc804\ud788 \uc88b\uc9c0 \ubabb\ud588\uace0, \ud53d\uc140\ud654\ub41c \ub290\ub08c\uc774 \ub9ce\uc774 \ub4e0\ub2e4. Gaussian Blur \ubc15\uc2a4\ube14\ub7ec\uc640\ub294 \ub2e4\ub974\uac8c, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[24,5],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44043"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=44043"}],"version-history":[{"count":12,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44043\/revisions"}],"predecessor-version":[{"id":44485,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44043\/revisions\/44485"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=44043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=44043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=44043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}