Python 및 AI개발/Image Processing

테두리 추출용 XDoG 필터 코드 (파이썬3용)

별냥이 2020. 3. 13. 16:22
반응형

테두리 추출용 XDoG필터 구현한 파이썬3용 코드

출처 : https://blog.csdn.net/qq_27879381/article/details/72718135

 

XDoG:一种快速简洁的图像边缘提取器_Python_icmll-CSDN博客

引言 前段时间由于做Auto-painter(经常抽风会坏掉的demo、很卡常常进不去的文章)的项目,需要生成一大堆训练集,就是一张彩色的图片和它的线条图(sketch),一些现成的什么边缘提取算子的效果感觉都不太好用,机智的我找寻到了一种叫做XDoG的边缘提取算子,并且用matlab和python都进行了实现。效果如下: Figure 1. sketch Figure 2. orginal picture 基本原理 基本就是参照谷歌2012年的的一篇叼叼叼的论文:XDoG: An eXtended dif

blog.csdn.net

편의를 위해 폴더 불러오는 루틴은 원본에서 일부 수정했습니다. 성능은 대단하네요. 경로명은 적당히 수정해주시기 바랍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from PIL import Image,  ImageEnhance
from pylab import *
#import numpy as np
from scipy.ndimage import filters
#from skimage import io
from os import listdir
import glob, os, shutil
 
#in_dir = 'debug'
#out_dir = in_dir + '_combine'
in_dir = "d:\\input"
out_dir = "d:\\output"
 
def main():
    #for files1 in glob.glob(in_dir + './images/*.jpg'):
    for tmpfile in listdir(in_dir):
        files1 = os.path.join(in_dir, tmpfile)
 
        print("변환: ", files1)
 
 
        Gamma = 0.97
        Phi = 200
        Epsilon = 0.1
        k = 2.5
        Sigma = 1.5
 
        im = Image.open(files1).convert('L')
        im = array(ImageEnhance.Sharpness(im).enhance(3.0))
        im2 = filters.gaussian_filter(im, Sigma)
        im3 = filters.gaussian_filter(im, Sigma* k)
        differencedIm2 = im2 - (Gamma * im3)
        (x, y) = shape(im2)
        for i in range(x):
            for j in range(y):
                if differencedIm2[i, j] < Epsilon:
                    differencedIm2[i, j] = 1
                else:
                    differencedIm2[i, j] = 250 + tanh(Phi * (differencedIm2[i, j]))
 
 
        gray_pic=differencedIm2.astype(np.uint8)
        final_img = Image.fromarray( gray_pic)
 
if __name__ == '__main__':
    main()
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
반응형