Kuwahara filter라고 하는 분명히 일본인의 이름인 이미지 필터를 만나, 시험해 보면 대단했기 때문에 소개한다.
나중에 제안에 대해 썼습니다 사진 표현으로서의 쿠와하라 필터의 제안
소개
Kuwahara filter(쿠와하라 필터)란?
쿠와하라 필터는 쿠와하라 미치요시씨라는 대학 교수(Wikipedia 曰く)가 고안한 평활화 필터의 일종으로, 내용의 단순함에 반해 능숙하게 걸치면 마치 유화와 같이 되는, 왠지 대단한 필터로 맞는다(먼저 결과 보고 싶은 분은 기사의 맨 아래를 들여다 보자)
Kuwahara filter -Wikipedia
SPECT용 데이터 처리(원논문?)
쿠와하라 필터의 내용
h tps : // 우 ぉ 아 d. 으아아아아. 오 rg/우이키페아/코몬 s/4/49/쿠와하라. jpg
쿠와하라 필터를 간단히 설명하면,
각 화소의 색을 그 주위의 임의의 폭의 좌상, 우상, 좌하, 우하의 정사각형 영역 중에서, 가장 분산의 합이 작은 영역의 평균 색으로 하는 필터입니다.
위의 이미지에서 말하면 중심 픽셀의 색상을 결정하려면
h tps : // 우 ぉ 아 d. 으아아아아. 오 rg/우이키페아/코몬 s/4/49/쿠와하라. jpg
쿠와하라 필터를 간단히 설명하면,
각 화소의 색을 그 주위의 임의의 폭의 좌상, 우상, 좌하, 우하의 정사각형 영역 중에서, 가장 분산의 합이 작은 영역의 평균 색으로 하는 필터입니다.
위의 이미지에서 말하면 중심 픽셀의 색상을 결정하려면
a의 영역의 분산, b의 영역의 분산, c의 영역의 분산, d의 영역의 분산을 RGB 각 색으로 계산해, 영역 마다 RGB 모두 더합합니다.
위의 절차 또는 동등한 결과를 얻을 수 있는 프로세스를 거칩니다.
또, 화상에서는 정사각형 영역의 한변은 3픽셀입니다만, 임의의 폭으로 k입니다.
구현
정의
6/11 수정 for문을 폐해 10배 정도 고속화했습니다
Kuwahara.pyimport numpy as np
import cv2
def kuwahara(pic,r=5,resize=False,rate=0.5): #元画像、正方形領域の一辺、リサイズするか、リサイズする場合の比率
h,w,_=pic.shape
if resize:pic=cv2.resize(pic,(int(w*rate),int(h*rate)));h,w,_=pic.shape
pic=np.pad(pic,((r,r),(r,r),(0,0)),"edge")
ave,var=cv2.integral2(pic)
ave=(ave[:-r-1,:-r-1]+ave[r+1:,r+1:]-ave[r+1:,:-r-1]-ave[:-r-1,r+1:])/(r+1)**2 #平均値の一括計算
var=((var[:-r-1,:-r-1]+var[r+1:,r+1:]-var[r+1:,:-r-1]-var[:-r-1,r+1:])/(r+1)**2-ave**2).sum(axis=2) #分散の一括計算
#--以下修正部分--
def filt(i,j):
return np.array([ave[i,j],ave[i+r,j],ave[i,j+r],ave[i+r,j+r]])[(np.array([var[i,j],var[i+r,j],var[i,j+r],var[i+r,j+r]]).argmin(axis=0).flatten(),j.flatten(),i.flatten())].reshape(w,h,_).transpose(1,0,2)
filtered_pic = filt(*np.meshgrid(np.arange(h),np.arange(w))).astype(pic.dtype) #色の決定
return filtered_pic
실행
Kuwahara.pyimport matplotlib.pyplot as plt
pic=np.array(plt.imread("input_picture.png")) #input_picture.pngをフィルターを掛けたい画像のパスに変更してください
filtered_pic=kuwahara(pic,7,True,0.2)
plt.imshow(filtered_pic)
plt.show()
결과
작년 프랑스 여행에 갔을 때 찍은 사진의 일부입니다.
원본 이미지
필터 적용 후
정사각형 영역의 한 변을 줄인 ver.
_인인인인인인_
>진짜 회화<
 ̄Y^Y^Y^Y^Y^Y^ ̄
쉽게 시도하고 싶은 분에게
colab에서 볼 수 있도록 해 보았습니다. 쿠와하라 _하지만. 이 pyn b
원하는 이미지의 URL을 입력하여 사용해 보세요.
요약
캔버스에 그린 것 같은 질감이 굉장히 감동했기 때문에 소개했습니다. 간단하기 때문에 시도해보십시오.
심도 맵을 준비하고 그에 따라 정사각형 영역의 크기를 조정하면 재미있을지도…
큰 이미지라면 시간이 걸릴 수 있습니다. 세 번째 인수를 True로 만드는 것을 잊지 마십시오.
Reference
이 문제에 관하여(Kuwahara filter라고 하는 분명히 일본인의 이름인 이미지 필터를 만나, 시험해 보면 대단했기 때문에 소개한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Cartelet/items/5c1c012c132be3aa9608
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import numpy as np
import cv2
def kuwahara(pic,r=5,resize=False,rate=0.5): #元画像、正方形領域の一辺、リサイズするか、リサイズする場合の比率
h,w,_=pic.shape
if resize:pic=cv2.resize(pic,(int(w*rate),int(h*rate)));h,w,_=pic.shape
pic=np.pad(pic,((r,r),(r,r),(0,0)),"edge")
ave,var=cv2.integral2(pic)
ave=(ave[:-r-1,:-r-1]+ave[r+1:,r+1:]-ave[r+1:,:-r-1]-ave[:-r-1,r+1:])/(r+1)**2 #平均値の一括計算
var=((var[:-r-1,:-r-1]+var[r+1:,r+1:]-var[r+1:,:-r-1]-var[:-r-1,r+1:])/(r+1)**2-ave**2).sum(axis=2) #分散の一括計算
#--以下修正部分--
def filt(i,j):
return np.array([ave[i,j],ave[i+r,j],ave[i,j+r],ave[i+r,j+r]])[(np.array([var[i,j],var[i+r,j],var[i,j+r],var[i+r,j+r]]).argmin(axis=0).flatten(),j.flatten(),i.flatten())].reshape(w,h,_).transpose(1,0,2)
filtered_pic = filt(*np.meshgrid(np.arange(h),np.arange(w))).astype(pic.dtype) #色の決定
return filtered_pic
import matplotlib.pyplot as plt
pic=np.array(plt.imread("input_picture.png")) #input_picture.pngをフィルターを掛けたい画像のパスに変更してください
filtered_pic=kuwahara(pic,7,True,0.2)
plt.imshow(filtered_pic)
plt.show()
colab에서 볼 수 있도록 해 보았습니다. 쿠와하라 _하지만. 이 pyn b
원하는 이미지의 URL을 입력하여 사용해 보세요.
요약
캔버스에 그린 것 같은 질감이 굉장히 감동했기 때문에 소개했습니다. 간단하기 때문에 시도해보십시오.
심도 맵을 준비하고 그에 따라 정사각형 영역의 크기를 조정하면 재미있을지도…
큰 이미지라면 시간이 걸릴 수 있습니다. 세 번째 인수를 True로 만드는 것을 잊지 마십시오.
Reference
이 문제에 관하여(Kuwahara filter라고 하는 분명히 일본인의 이름인 이미지 필터를 만나, 시험해 보면 대단했기 때문에 소개한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Cartelet/items/5c1c012c132be3aa9608
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Kuwahara filter라고 하는 분명히 일본인의 이름인 이미지 필터를 만나, 시험해 보면 대단했기 때문에 소개한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Cartelet/items/5c1c012c132be3aa9608텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)