相比大家都用过美颜软件,手机开发商越来越重视手机的相机功能,特别是相机美颜的功能。那么今天给大家介绍一下其背后的算法。
变换,
任何周期性函数,都可以变换为正余弦函数
拉普拉斯(Laplacian)变换,在介绍拉普拉斯变换前我们先来介绍一下什么是傅里叶变换。首先傅里叶是把一个函数或图像拆解为正弦波。
我们还需要理解一下时域和频域的概念
相位维度我们把一个时域信号通过傅里叶变换会变换为频域、振幅和相位。我们根据通过频域、振幅和相位返推为时域信号。
对于非周期函数变换,欧拉公式
低频表示人的轮廓,而高频表示人细节。物质是具有波粒二象性,我们接触的都是波,看到是光波听到是声波,人类的大脑主要一部分工作是对波的处理,同时也具有傅里叶变换的功能。
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread("messi5.jpg",cv.IMREAD_GRAYSCALE)
titles = ['image']
images = [img]
for i in range(1):
plt.subplot(1,1,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
img = cv.imread("messi5.jpg",cv.IMREAD_GRAYSCALE)
lap = cv.Laplacian(img,cv.CV_64F)
lap = np.uint8(np.absolute(lap))
titles = ['image','Laplacian']
images = [img,lap]
for i in range(2):
plt.subplot(1,2,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
lap = cv.Laplacian(img,cv.CV_64F,ksize=5)
lap = cv.Laplacian(img,cv.CV_64F,ksize=3)
lap = cv.Laplacian(img,cv.CV_64F,ksize=1)
img = cv.imread("messi5.jpg",cv.IMREAD_GRAYSCALE)
lap = cv.Laplacian(img,cv.CV_64F,ksize=3)
lap = np.uint8(np.absolute(lap))
sobelX = cv.Sobel(img,cv.CV_64F,1,0)
sobelY = cv.Sobel(img,cv.CV_64F,0,1)
titles = ['image','Laplacian','sobelX','sobelY']
images = [img,lap,sobelX,sobelY]
for i in range(4):
plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
我们通过上图可以清晰地看到在 sobelx 和 sobely 增强输出白色部分分别为横向和纵向输出。
img = cv.imread("sudoku.png",cv.IMREAD_GRAYSCALE)
sobelCombined = cv.bitwise_or(sobelX,sobelY)