ç»åå¦çãåºç¤ããå¦ã¶
ãç§ã¯ãã«ã¡ã©ã好ããªãã¨ããããç»åå¦çã«é¢ãã¦ãèå³ããã¾ããä¸è¬çã«ã¯ãRAWç¾åã¨ãPhotoShopã®ãã¯ããã¯ãªã©ã身ã«ã¤ãã人ãå¤ãããã§ãããç§ã®å ´åã¯ãä½æ ãpythonãOpenCVã¨ãã便å©ãªç»åå¦çã©ã¤ãã©ãªã使ã£ã¦ç»åå¦çã½ãããèªä½ããã¨ããããå§ãããã¨ãã¦ãã¾ãã
ããã ãOpenCVã¯ä¾¿å©ãªã®ã§ããã便å©ããããã«ãã©ãã¯ã¹ããã¯ã¹çã«ä½¿ã£ã¦ãã¾ã£ã¦ããã®ãæ°ã«ãªã£ã¦ãã¾ããããã£ã±ãå é¨ã§ä½ããã¦ãããããã£ã¦ããªãã¨ãã¡ãã£ã¨APIã«ç¡ãå¦çããããã¨ãããåé¡ãçºçããã¨ãã«ä½ãã©ãããã°è¯ãã®ãå ¨ç¶åãããªãã§ãããOpenCVã使ãã¾ã§ããªãå¦çã«OpenCVã使ã£ã¦ãã¾ãã®ãããããç¡ããªã¨æãã¾ããOpen CVã¤ã³ã¹ãã¼ã«æéã§ããçµæ§æéãããã®ã§ï¼ç¹ã«Raspberry Piã¨ãã ã¨ï¼ã
ãåºç¤ããç解ããã«ã¯ãOpenCVã®ã½ã¼ã¹ãèªãã®ãããã®ã§ããããã¯ãèªåã§ä¸åº¦ä½ã£ã¦ã¿ãã®ãä¸çªãã¨ããããã§ãOpenCVã«é ¼ããåºç¤çãªç»åå¦çã®ã©ã¤ãã©ãªã®PILã¨è¡åè¨ç®ã®ã©ã¤ãã©ãªã®Numpyã ãã使ã£ã¦ã1ããç°¡åãªç»åå¦çã®ãã£ã«ã¿ãä½ã£ã¦ç解ãã¦ã¿ããããªã¨æãã¾ãã
ãTOKIOçã«è¨ãã°
ãç»åå¦çã®ã½ãããä½ã£ã¦ãã ããã
ãããã¯ã©ãããã¬ãã«ã§ã¤ããã®ï¼ Open CVããï¼ãã«ã¹ã¯ã©ããã§ï¼ã
ãã¨ããæãã§ããã©ã¤ãã©ãªã¯ä½¿ã£ã¦ããã®ã§ããã«ã¹ã¯ã©ããã¯å¤§ããã§ããããä»åã®è¨äºã¯Macãæ³å®ãã¦ãã¾ãããRaspberry Piã§ãOKã§ãã
ç»åå¦çã®ãã£ã«ã¿ã1ããä½ã
ç°å¢æ§ç¯
ãç°å¢æ§ç¯ã¯ä»¥ä¸è¨äºãåç §ãã¦ä¸ãããMacã®å ´åãRaspberry Piã®å ´åã«åãã¦ã»ããã¢ããæ¹æ³ã解説ãã¦ãã¾ããLinuxã§ãOKã¨æãã¾ãããããã§ã¯ç°å¢è¨å®ã¯çç¥ãã¾ããã¾ããWindowsã§ãAnacondaçå ¥ããã°åããã¨ã§ããã¨æãã¾ãããç°å¢ããªããã試ãã¦ã¯ãã¾ãããæªããããã
ãä¸è¨ã ãã ã¨Numpyãå ¥ããªãã®ã§ã以ä¸ã³ãã³ãå®è¡ãã¦Numpyãã¤ã³ã¹ãã¼ã«ãã¾ãããã
$ pip install numpy
ãRaspberry Piã®å ´åã¯ã以ä¸ã§ããã±ã¼ã¸ãã¤ã³ã¹ãã¼ã«ããã¨è¯ãããããã¾ãã
$ sudo apt-get install python-numpy
ãã»ããã¢ãããå«ããpython2ã§ã®åä½ãåæã«ãã¦ãã¾ãããããã°ã©ã èªä½ã¯python3ã§ãåä½ãã¾ãã
ç»åå¦çã®ãã£ã«ã¿ã®ä»çµã¿
ãç»åå¦çã®ãã£ã«ã¿ã§ãããå®ã¯å¤ç¨®å¤æ§ã®æ§ã ãªãã£ã«ã¿ãããã¾ããä»åã¯ãã®ä¸ã§ã代表çãªãã¼ããå¦çã¨ãã¨ãã¸å¼·èª¿ãããããã®ç»åãã£ã«ã¿ã«é¢ãã¦åãä¸ãã¾ããåºæ¬çãªææ³ããç»åã®å ¨ç»ç´ ã«å¯¾ãã¦ãå¨å²ã®ç»ç´ ã®å¤ã«ãããä¿æ°ãæãåããããã®ãä»£å ¥ããã¨ããå¦çãããã¨ãããã®ã§ãããã®ä¿æ°ã®è¡åããã£ã«ã¿ï¼ã«ã¼ãã«ï¼ã¨å¼ã³ã¾ããè¨èã ã¨ãã¾ã説æã§ããªãã®ã§ã10x10ã®ç»åãä¾ã«ãã¦ãå³ã¨æ°å¼ã§èª¬æããã¨ä»¥ä¸ã®ãããªæãã§ãã
ãå³ã®è¡åããã£ã«ã¿ã§ãããã®å¦çã(i, j)
ã®(0,0)ã(10,10)
å
¨ã¦ã®ç»ç´ ã«å¯¾ãã¦å®æ½ããã®ã§ãããããããï¼åãããªãã£ãããã¿ã¾ããã以ä¸ã®ãµã¤ãã¨ãè¦ã¦ã¿ãæ¹ãããããããããããã¾ããã
コンボリューション(畳み込み処理)を実装してみる - Qiita
画像処理の数式を見て石になった時のための、金の針 - Qiita
ããããã£ãè¨ç®ã®ãã¨ãç³ã¿è¾¼ã¿ï¼ç³ã¿è¾¼ã¿æ¼ç®ã»ç³ã¿è¾¼ã¿ç©åï¼ã¨è¨ãã¾ããä¸è¨ã¯ãã¢ãã¯ãç»åã®ä¾ã§ããããããRGBã®3ãã£ãã«åå®æ½ããã°ã«ã©ã¼ç»åã¨ãªãã¾ãã
ãä»çµã¿ãåãã£ãããæ©éå®è£ ãã¦ã¿ã¾ããã½ã¼ã¹ã¯ãéèªInterfaceã®2017å¹´5æå·ãåèã«ãã¾ããã
ããã®éèªã¯ãèªåãç»åå¦çã®ãã£ã«ã¿ã1ããåå¼·ãããã¨æã£ããã£ããã«ãªã£ãæ¬ã§ãæ§ã ãªç»åå¦çã®ææ³ã¨ã½ã¼ã¹ã³ã¼ããæããããªãç´¹ä»ããã¦ãã¾ãããã ããè¨èªã¯Cã§æ¸ããã¦ããã®ã§ãä»åpythonã«èªåã§ç§»æ¤ããå½¢ã«ãªãã¾ãã
ã移æ¤ã«é¢ãã¦ãåèã«ãããµã¤ãã¯æ¬è¨äºã®æå¾ã§ç´¹ä»ããã¦ããã ãã¾ãã
å ¥åããã®ã¾ã¾åºåãããã£ã«ã¿
ãã¾ãã¯ã以ä¸ã®ãããªãã£ã«ã¿ãä¾ã«ãããã°ã©ã ãæ¸ãã¦ã¿ã¾ãã
ããã®ãã£ã«ã¿ã¯ãèªèº«ã®ç»ç´ ã ãã«1
ãããããããªãã¡ä½ãå¦çãããªããã£ã«ã¿ã¨ãªãã¾ããããã°ã©ã ã¯ä»¥ä¸ã®ãããªæãã«ãªãã¾ãã
from PIL import Image import numpy as np import sys filter = [0, 0, 0, 0, 1, 0, 0, 0, 0] def image_process(src): width, height = src.size dst = Image.new('RGB', (width, height)) img_pixels = np.array([[src.getpixel((x,y)) for y in range(height)] for x in range(width)]) color = np.zeros((len(filter), 3)) for y in range(1, height-1): for x in range(1, width-1): color[0] = img_pixels[x-1][y-1] color[1] = img_pixels[x-1][y] color[2] = img_pixels[x-1][y+1] color[3] = img_pixels[x][y-1] color[4] = img_pixels[x][y] color[5] = img_pixels[x][y+1] color[6] = img_pixels[x+1][y-1] color[7] = img_pixels[x+1][y] color[8]= img_pixels[x+1][y+1] sum_color = np.zeros(3) for num in range(len(filter)): sum_color += color[num] * filter[num] r,g,b = map(int, (sum_color)) r = min([r, 255]) r = max([r, 0]) g = min([g, 255]) g = max([g, 0]) b = min([b, 255]) b = max([b, 0]) dst.putpixel((x,y), (r,g,b)) return dst if __name__ == '__main__': param = sys.argv if (len(param) != 2): print ("Usage: $ python " + param[0] + " sample.jpg") quit() # open image file try: input_img = Image.open(param[1]) except: print ('faild to load %s' % param[1]) quit() if input_img is None: print ('faild to load %s' % param[1]) quit() output_img = image_process(input_img) output_img.save("filtered_" + param[1]) output_img.show()
ã5è¡ç®ã®ä»¥ä¸ããã£ã«ã¿ã®é åã§ãã
filter = [0, 0, 0, 0, 1, 0, 0, 0, 0]
ã以ä¸ã®ãããªæä½ã§ãç»åãnumpyã®é
åã«ã¶ã¡ãããã¨ãã§ãã¾ãã®ã§ãå¾ã¯1ç»ç´ ãã¨ã«æä½ããã¦putpixel
ã§åãåºãã ãã§ãã
img_pixels = np.array([[src.getpixel((x,y)) for y in range(height)] for x in range(width)])
ãããã°ã©ã ã«é¢ãã¦ã詳細ã¯èª¬æãã¾ãããããããªæãã®æ¸ãæ¹ã§èªã¿è¾¼ãã ç»åã®å ¨ç»ç´ ã«å¯¾ãã¦ããã£ã«ã¿ãªã³ã°å¦çãã§ãã¾ããèå³ããã人ã¯èªèº«ã§èª¿ã¹ã¦ã¿ã¦ãã ããããããªã«é£ãããã¨ã¯ãã¦ãã¾ããã
ãå®è¡æ¹æ³ã¯ãããã°ã©ã ãfilter.py
ã¨ããååã§ä¿åãã¦ãã¨å¯¾è±¡ã®ç»åsample.jpg
ãåããã©ã«ãã«é
ç½®ãã¦ã以ä¸ã³ãã³ããå®è¡ããã ãã§ãã
$ python filter.py sample.jpg
ãç¾èã¯ä¸è¦ã«å¦ããã§ãããã¤ãã®ããªã¼ç´ æã§è©¦ãã¦ã¿ã¾ãããããã³ã¹ã¿ãã(id:lonestartx) ãã¤ããããã¨ããããã¾ãã
ãã¤ã±ã¡ã³ã
ããã£ã«ã¿ãéãã¨
ãã¯ããã®ã¾ã¾ï¼
ãä½ãé¢ç½ããªãã§ããã
ã¼ãããã£ã«ã¿
ã次ã¯ã以ä¸ã®ãããªãã£ã«ã¿ã使ã£ã¦ã¿ã¾ãã
ãå¨ãã®ç»ç´ ã¨å¹³åãããã¨ã«ãªãã®ã§ãã¼ãã£ã¨ãããã£ã«ã¿ã«ãªããã¨ãæå¾ ã§ãããã§ããã
ãå ·ä½çã«ã¯ãå ã»ã©ã®ããã°ã©ã ã®5è¡ç®ã®é åã以ä¸ã«ä¿®æ£ãã¾ãï¼python2ï¼ã
filter = [1.0/9.0, 1.0/9.0, 1.0/9.0, 1.0/9.0, 1.0/9.0, 1.0/9.0, 1.0/9.0, 1.0/9.0, 1.0/9.0]
ãããããã¨
ãã¤ã±ã¡ã³ã
ãã¡ãã£ã¨ããã£ã¨ããï¼
ãä»åã¯ããã£ã«ã¿ã®å¤ã¯å ¨ã¦åãå¤ã®ç§»åå¹³åãã£ã«ã¿ï¼å¹³æ»åãã£ã«ã¿ã¨ãå¼ã°ããï¼ã試ãã¾ããããé ãã®ç»ç´ ã»ã©ãææ°é¢æ°çã«å¤ãå°ãããããããªå¤ã«ããã¨ãã¬ã¦ã·ã¢ã³ãã£ã«ã¿(Gaussian filter)ã¨å¼ã°ãã代表çãªãã«ã·ãã£ã«ã¿ã«ãªãã¾ãã
平滑化(移動平均、ガウシアン)フィルタ 画像処理ソリューション
ã¨ãã¸ãã£ã«ã¿
ãä»åº¦ã¯ä»¥ä¸ã®ãããªãã£ã«ã¿ã試ãã¦ã¿ã¾ãã
ããªãã¨ãªãã§ããã縦æ¹åã®ç»ç´ ã ãã¨ã£ã¦ããã®ã§ã縦(Yæ¹å)ã®å·®ï¼å¾®åï¼ãåã£ã¦ããããã¨ãããã¨ã¯ã縦æ¹åã«å¤åãããã¨ããã強調ããããã§ãããå ã»ã©ã®ç»åã§è©¦ãã¦ã¿ãã¨ã
ã縦æ¹åã®å¤åã強調ãããï¼
ãåæ§ã«ä»¥ä¸ã®ãã£ã«ã¿ã§è©¦ãã¦ã¿ã¾ããããä»åº¦ã¯ã©ããªãã§ããããï¼
ãåãããã«å®è¡ããã¨â¦
ãä»åº¦ã¯æ¨ªæ¹åã®å¤åã強調ãããï¼
ãããããããã®ãã£ã«ã¿ã足ãç®ãããããªä»¥ä¸ã®ãããªãã£ã«ã¿ã¯ã©ãã§ããããï¼
ã試ãã¦ã¿ãã¨â¦
ã両æ¹å¼·èª¿ãããï¼
ãã¡ãªã¿ã«ããã®ç¸¦æ¨ªä¸¡æ¹å¼·èª¿ãããããªãã£ã«ã¿ã¯ã©ãã©ã·ã¢ã³ãã£ã«ã¿(Laplacian Filter)ã¨å¼ã°ãã¾ãã
ããããªæãã§ããã£ã«ã¿ã®å¤ãè²ã å¤ããã¨ãç»åã®æ§ã ãªç¹å¾´ãæ½åºãããã¨ãã§ãããã¨ããããã¾ãã
ç»åã®ãã£ã«ã¿å¦çã¯ãã£ã¼ãã©ã¼ãã³ã°ã«ãæ·±ãé¢ããããã
ãå®ã¯ããããã£ãç»åå¦çã®åºç¤ã¯ãæè¿è©±é¡ã®ãã£ã¼ãã©ã¼ãã³ã°ã«ãæ·±ãé¢ãããããã¾ãããã£ã¼ãã©ã¼ãã³ã°ãå¾æãªã®ã¯ãç»åèªèã§ä»¥ä¸ã®ãããªç¹å¾´ãããã¨ä»¥åãç´¹ä»ãã¾ããã
ãä¸å³ã®è©³ç´°ã¯ä»¥ä¸ã®è¨äºåç §ä¸ããã
ããã£ã¼ãã©ã¼ãã³ã°ã¯ãç¹å¾´éã®æ½åºãèªåã§ãã£ã¦ãããã®ãåãã®ã§ãããããã®é¨åã¯å ·ä½çã«ä½ããã£ã¦ãããã¨ããã¨ãå®ã¯ã¾ãã«å ã»ã©ç´¹ä»ãããã£ã«ã¿ã®å¤ã®è¨è¨ãªã®ã§ãã
ã3x3ã§ç¸¦ã強調ããã¨ããåç´ãªä¾ãªãã¾ã ãããä¾ãã°ç»åããç«ã£ã½ãç¹å¾´ãæ½åºããããã«ã5x5ã10x10ã®ãµã¤ãºã®ãã£ã«ã¿ã2åéãã¦â¦ãªãã¦äººéã«ã¯è¨è¨ã§ããæ°ããã¾ãããããããªãã£ã«ã¿ãèªåã§è¨è¨ã§ããã®ãããã£ã¼ãã©ã¼ãã³ã°ã§æåãªCNN(Convolutional Neural Network)ã¨ãããã¥ã¼ã©ã«ãããã¯ã¼ã¯ã§ããConvolutionalã¯æ¥æ¬èªã«è¨³ãã¨ãç³ã¿è¾¼ã¿ãã§ã¾ãã«å ã»ã©ã®ãã£ã«ã¿ã®è¨ç®ã®ãã¨ã§ãã
ãã¾ãããã£ã¼ãã©ã¼ãã³ã°ã«ããã¦ããã£ã«ã¿ï¼ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ï¼ã¯èªåã§è¨è¨ãã¦ãããã®ã§ããããã®ããã«å¿ è¦ãªå ¥åãã¼ã¿ã®è³ªãéè¦ã«ãªã£ã¦ãã¦ããããããä½åãªæ å ±ã®ãã¤ãºãé¤å»ï¼ãã£ã«ã¿ãªã³ã°ï¼ãããã¨ãé常ã«å¤§åã«ãªã£ã¦ãããããããã«ãåºç¤çãªãã£ã«ã¿ãªã³ã°ã¨ãã£ãç»åå¦çã¯é常ã«éè¦ã«ãªã£ã¦ããã®ã§ãï¼åå¦çã¨å¼ã°ããããã¾ãï¼ã
ãä½è«ã§ããããã£ã¼ãã©ã¼ãã³ã°ã®CNNã¯å²ç¢ã§ä¸çä¸ã®ããæ£å£«ã«åã£ããã¨ã§æåãªAlphaGoã«ã使ããã¦ãã¾ããå²ç¢ã®é»ç½ã®19Ã19ã®ç¤é¢ããã¢ãã¯ãç»åã«è¦ç«ã¦ã¦å¦ç¿ãã¦ããã®ã§ããåãäºèãã¾ãããAlphaGoã®è©³ç´°ã¯ã以ä¸ã®è¨äºã詳ããã§ãã
Googleが出した囲碁ソフト「AlphaGo」の論文を翻訳して解説してみる。 - 7rpn’s blog: うわああああな日常
ãã¡ãªã¿ã«å°æ£ã¯ãé§ã®ç¨®é¡ãå¤ãã®ã§å²ç¢ã«æ¯ã¹ãã¨CNNã¨ã®ç¸æ§ã¯ããç¡ãããããã£ã¼ãã©ã¼ãã³ã°ã¯ã¾ãã«ãããã使ããã ãã¦ããã¨ããã¨ããã§ããä»ã¾ã§ããæ£å£«ã¨ã®åè² ã«ä½¿ããã¦ããå°æ£ã½ããã¯ãåºæ¬çã«ã¯ãã£ã¼ãã©ã¼ãã³ã°ä»¥åã®æ©æ¢°å¦ç¿ãç¨ãããã¦ããã¨æãã¾ãï¼ç§ã®ç¥ãéãï¼ãå°æ£ã®ã½ãããããã£ã¼ãã©ã¼ãã³ã°ã使ããã¨ã§ããããæ´ã«å¼·ããªã£ã¦ããããããã¾ãããã
ã¾ã¨ã
ãç»åå¦çã®ãã£ã«ã¿ã«é¢ãã¦ãç°¡åã«ã¾ã¨ãã¦å®éã«pythonã§å®è£ ãã¦ã¿ã¾ããããã ãå®éã«å®è¡ãã¦ã¿ãã¨åããã®ã§ãããä»åã®ããã°ã©ã ã£ã¦ç©åãé ãã§ããnumpyã£ã¦foræä½åº¦ãåããããªè¨ç®ã£ã¦ä¸å¾æãªã®ã§ãããâ¦OpenCVã ã¨ããããã£ãã¨ãããæé©åããã¦ãã¾ãããä»åç´¹ä»ãããããªãã£ã«ã¿ã¯å ¨ã¦é¢æ°ã¨ãã¦ç¨æããã¦ãã¾ããããããã£ã±ãOpenCVãè¯ããããã¨ãªã£ã¦ãã¾ãããã§ãå®éãããªã®ã§ãããããã£ãåºç¤çãªã¨ãããç¥ã£ã¦ããã¨è¯ããã¨ããããããã¨ããç§ã®ä½è¨ãªãç¯ä»ã¨æã£ã¦ä¸ããï¼ä»æ´ã®è¡æçãªåç½ï¼ã
ãã¾ããOpenCVã使ããªãã¨ä½ãã§ããªãã¨ããã®ãã«ãã³æªãã§ããããOpenCVã使ããªãç°å¢ãäºæ ãããå ´åãããã¨æãã¾ããï¼ä»ææ» å¤ã«ç¡ãããªï¼ï¼ãä»åã®ãããªåºç¤ãªããè¦ãã¦ããã¨ãã©ã®ãããªç°å¢ã»è¨èªã§ãå¿ç¨ãããã¨æãã¾ããã¾ããããã£ãåºç¤çãªæè¡ããæå 端ã®ãã£ã¼ãã©ã¼ãã³ã°ã§ãéè¦ã§å¤ç¨ããã¦ããã¨ããã®ãä¸ã å³ããæ·±ããã®ãããã¾ããç¨èªèªä½ã¯ãPhotoshopãªã©ã®ç»åå¦çã§ã使ããããã®ããããããã¾ããããä½äºãåºç¤ã¯å¤§åã¨ãããã¨ã§ãã
ãä»å使ç¨ããããã°ã©ã ã¯ã以ä¸ã®GitHubã®ãªãã¸ããªã«ãã¢ãããã¦ããã¾ããåèã¾ã§
追è¨ï¼numpyã§foræãåããªãã§æ¸ãæ¹æ³
ãtwitterã§numpyã§foræã使ããã«æ¸ãæ¹æ³ãæãã¦ããã ãã¾ããã
numpyã§ããããªæãï¼https://t.co/IBFFDs6bYcï¼ã«ããã°for使ããªãã¦æ¸ãã®ã«â¦ / OpenCVã«é ¼ããªãã§python+numpy+PILã§ç»åå¦çã®ãã£ã«ã¿ã1ããä½ã£ã¦ç解ãã - karaage https://t.co/3bHfaCMd8m
— ðâðâðâð¥âðâð¡âðâã·ã¢ã©ã ð¶ (@cia_rana) 2017å¹´7æ31æ¥
è¦ã¯é¨åé åãä½ã£ã¦ä¿æ°ããã¦è¶³ãå¼ãããã ãã§ç³è¾¼è¨ç®ã§ããã£ã¦ãã¨
— ðâðâðâð¥âðâð¡âðâã·ã¢ã©ã ð¶ (@cia_rana) 2017å¹´7æ31æ¥
ãè¨ã訳ã§ã¯ãªãã§ãããforæãã¢ãã¿ããã«åãã¦ããã®ã¯ã移æ¤å ã®Cã®ã³ã¼ãã極åãã®ã¾ã¾æã£ã¦ãã¦åçã®ç解ã«åªãããã£ãã®ãçç±ã§ãããã ãæ¬å½ã¯foræã使ããã«æ¸ãæ¸ãæ¹ã絶対ããã¨æã£ã¦ãã¦ã調ã¹ã¦ç´¹ä»ãããã£ãã®ã§ãããç§ã®åä¸è¶³ã§ã§ãã¾ããã§ãããããã¯è¨ã訳ããããªãæ¬é³ã§ãããããã£ã¦æãã¦ãããã¦æ¬å½ã«å©ããã¾ããã試ãã¦ãªãã§ãããè¡åè¨ç®ã¯numpyã®å¾æã¨ããã¨ãããªã®ã§ãç¸å½æ©ããªãã¨æãã¾ãã
ãç´¹ä»ãã¦ããã£ã以ä¸ã®ãµã¤ãããé常ã«è©³ããæ¸ãã¦ããããã«ãªãã¾ããããã®è¨äºæ¸ããªãã§ããã«ãªã³ã¯è²¼ã£ã¦ç½®ãã ãã§ãããã£ãããããã¾ããï¼ç¬ï¼ãã¾ãèªåã®åå¼·ã«ãªã£ãããããã¨ãã¾ãããï¼è¶ ååãï¼ã
行列による画像処理 基礎編&目次 ~Python画像処理の再発明家~ - Qiita
行列による畳み込みフィルタリング編 ~Python画像処理の再発明家~ - Qiita
ããã«è¿½è¨ï¼ç³ã¿è¾¼ã¿è¦å¯ã«æã¾ãã¾ãã
ãç³ã¿è¾¼ã¿è¦å¯ã㨠id:cruller ããããã以ä¸ææãé æ´ãããã¾ããã
ãç³ã¿è¾¼ã¿ã®ã¨ãã¯ãã«ã¼ãã«ãå軸ã«å¯¾ãã¦å転ï¼180°å転ï¼ãã¦è¨ç®ããã®ãæ£ããããã§ããå転ããªããã®ã¯ãï¼ç¸äºï¼ç¸é¢ã§ã¯ãªããã¨ãã主張ã§ããç¸äºç¸é¢ã¨ã大å¦ã®æã«ç¿ã£ããããªâ¦å®å ¨ã«å¿ãã¦ãã¾ãã¾ããããåå¼·ããªãããªããã
ããã ãæè¿ç»åå¦çãCNNï¼ãã£ã¼ãã©ã¼ãã³ã°ï¼é¢ä¿ã®æ¬ã4,5åãããèªãã§ããã®ã§ãããã©ããå転ãã¦ãªãã®ã§ããããåéã®éããªã®ãâ¦è¬ã¯æ·±ã¾ãã°ããã§ãã
åèãªã³ã¯
画像処理の数式を見て石になった時のための、金の針 - Qiita
NumPyでの画像のData Augmentationまとめ - kumilog.net
Computer Graphics : 15-462/662 Fall 2016
ã«ã¼ãã®ã¼å¤§å¦ã®ã³ã³ãã¥ã¼ã¿ã°ã©ãã£ãã¯ã¹ã®è¬ç¾©ã®ãµã¤ããè³æãç¡æã§èªãã¾ããCGã«èå³ãããåºç¤ããåå¼·ããã人ã¯è¯ããã
é¢é£è¨äº
å¤æ´å±¥æ´
-2022/07/09 ãã£ã«ã¿ã®ç¸¦æ¨ªæ¹åã®ééããä¿®æ£
- 2018/01/15 å
¨ä½çã«å¾®ä¿®æ£
- 2017/12/18 Numpyã§ã®ç»åå¦çã«é¢ãã¦ãªã³ã¯
- 2017/07/31 Numpyã§foræã使ããªãæ¸ãæ¹ã«é¢ãã¦è¿½è¨