** Was ist Kuwahara Filter ** Eine Erläuterung des Kuwabara-Filters finden Sie unter oben.
Dieses Mal machte ich am Ende des Vorstehenden einen kurzen Vorschlag.
"Es könnte interessant sein, eine Tiefenkarte zu haben und die Größe der quadratischen Fläche entsprechend anzupassen ..."
Ich würde es gerne versuchen.
Diese Idee ist, dass wenn das Hauptmotiv nicht klar ist (irgendwo unscharf), es eher wie ein Hintergrund als wie ein Gemälde aussieht, verglichen mit dem vorherigen Bild, das eine konstante Seite der quadratischen Fläche hat und gefiltert wird. Es wurde basierend auf erhalten.
Als Antwort auf den vorherigen Artikel gab es eine Meinung, dass die Bedeutung des Codes nicht verständlich (schwierig) war, also schrieb ich ihn in den "Sonomanma" -Code, der außerhalb der Berechnungsgeschwindigkeit liegt.
Es würde jedoch viel Zeit in Anspruch nehmen, Python zu viele Schleifen zu lassen, da dies viel Ausführungszeit in Anspruch nimmt. Daher habe ich den JIT-Compiler
verwendet, um zu helfen.
Für diejenigen, die nicht über Numba (eine Bibliothek mit JIT) verfügen, Verwendung der JIT-Compiler-Bibliothek Numba zur drastischen Beschleunigung des Python-Codes Bitte beziehen Sie sich auf 02/155433).
Kuwahara_with_Depth.py
import matplotlib.pyplot as plt
import numpy as np
import cv2
from numba import jit
@jit
def mean(arr):
h, w, c = arr.shape
avg = np.array([0]*c)
for i in range(h):
for j in range(w):
for k in range(c):
avg[k] += arr[i, j, k]
return avg/(h*w)
@jit
def var(arr, mean):
h, w, c = arr.shape
vari = 0
for i in range(h):
for j in range(w):
for k in range(c):
vari += (arr[i, j, k]-mean[k])**2
return vari
@jit
def kuwahara_with_depth(pic, r, r_min, depth):
h, w, c = pic.shape
out = np.empty_like(pic)
pic = np.pad(pic, ((r, r), (r, r), (0, 0)), "edge")
depth = depth/depth.max()
surr = ((1, 0), (0, 1), (1, 1))
for i in range(h):
for j in range(w):
dr = max(r_min, int(depth[i, j]*r))
arr = pic[i+r-dr:i+r, j+r-dr:j+r]
avg = mean(arr)
var_min = var(arr, avg)
color = avg
for s, t in surr:
arr = pic[i+r-(1-s)*dr:i+r+s*dr, j+r-(1-t)*dr:j+r+t*dr]
avg = mean(arr)
vari = var(arr, avg)
if vari < var_min:
color = avg
var_min = vari
out[i, j] = color
return out
def main(picpath, r, r_min, rate, depthpath): #Eingabebildpfad, Maximalwert auf einer Seite des quadratischen Bereichs, Minimalwert auf einer Seite des quadratischen Bereichs, Bildgrößenreduzierungsverhältnis, Tiefenkartenpfad
pic = np.array(plt.imread(picpath))
pic = cv2.resize(pic, (int(pic.shape[1]*rate), int(pic.shape[0]*rate)))
depth = cv2.resize(np.array(plt.imread(depthpath)[:, :, 0]), (pic.shape[1], pic.shape[0]))
# depth=cv2.resize(np.rot90(np.array(plt.imread(depthpath))[:,:,0]),(pic.shape[1],pic.shape[0])) #Wenn die Ausrichtung der Tiefenkarte nicht mit dem Originalbild übereinstimmt
fpic = kuwahara_with_depth(pic, r, r_min, depth).astype(pic.dtype)
plt.imshow(fpic)
# plt.imshow(np.rot90(fpic,3)) #Für den Fall, dass das Ausgabebild zur Seite zeigt
plt.show()
picpath = "input_pic.jpg " #Bildpfad eingeben
depthpath = "depthmap.jpg " #Tiefenkartenbildpfad
if __name__ == "__main__":
main(picpath, 20, 3, 0.5, depthpath)
Wieder werde ich ** French Nekko ** als Beispiel vom französischen Foto verwenden. In der obigen Erklärung wurde es als Tiefenkarte ausgedrückt, aber natürlich gibt es keine solchen Daten, daher werde ich ein Bild erstellen, das irgendwie so aussieht. Diesmal habe ich es mit einer Fotoshow richtig gemacht. Übrigens, je weißer die Fläche, desto größer eine Seite der quadratischen Fläche. (Es scheint, dass einige Smartphone-Fotodateien, die Hintergrundunschärfe verwenden können, Tiefenkarteninformationen enthalten. [Erstellen von Stereobildern / Bildern mit mehreren Blickwinkeln mithilfe der Google Camera Deph-Karte](http: //stereo.jpn) .org / kitkat / index.html))))
Hier ist derjenige, der diesmal mit diesen gefiltert wurde. Bitte klicken, um zu vergrößern und zu sehen. Es ist ein mysteriöses Finish, wie eine natürliche Verschmelzung von Foto und Bild, wie das Verwischen mit Farbe, anstatt das Objektiv zu verwischen.
Selbst auf den im Beispiel verwendeten Fotos denke ich, dass sich der Eindruck in Abhängigkeit von den Maximal- und Minimalwerten der quadratischen Fläche stark ändern wird. Wenn es richtig eingestellt wird, kann es wie ein Gemälde aussehen, in dem das Motiv und der Hintergrund klar gezeichnet sind, und in diesen Tagen, in denen Fotogenität erforderlich ist, kann es meiner Meinung nach als ungewöhnlicher fotografischer Ausdruck verwendet werden, wie im Titel gezeigt. Warum probierst du es nicht aus?
Recommended Posts