最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenCV利用高斯模糊實(shí)現(xiàn)簡(jiǎn)單的磨皮美顏效果

 更新時(shí)間:2021年12月29日 14:19:08   作者:九柳  
這篇文章主要介紹了通過(guò)OpenCV中的高斯模糊以及雙邊模糊來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的磨皮美顏效果,文中的講解很詳細(xì),感興趣的同學(xué)可以學(xué)習(xí)一下

1.高斯模糊

1.什么是高斯模糊

前面我們就知道了均值模糊和中值模糊,現(xiàn)在我們開(kāi)始了解高斯模糊。

首先高斯指的是高斯函數(shù),這個(gè)我想大家應(yīng)該都知道,是一種非常常見(jiàn)的概率分布函數(shù)。大概就長(zhǎng)這樣吧。

通過(guò)均值模糊類比,我們可以大膽的猜出來(lái)高斯模糊的含義:

每一次需要處理的像素矩陣中不同地方的像素的值在最后的賦值像素的占比是不一樣的。這個(gè)占比是按照高斯函數(shù)所分布的。

也就是說(shuō),越是遠(yuǎn)離中心像素的像素所占比重就更少,而中心像素值在賦值像素中的比重是最重的。

或者說(shuō),我們知道之前均值模糊所乘以的矩陣是

而高斯模糊中所乘的3*3矩陣可以是這樣的

可視化后就是這樣的

雖然我們可以從數(shù)學(xué)上得知高斯模糊和均值模糊的區(qū)別,但是在效果上我個(gè)人覺(jué)得高斯模糊可能能比起均值模糊能更好的保留邊緣信息(只是個(gè)人看法)

最后把高斯模糊的計(jì)算公式提供給數(shù)學(xué)大佬

2.opencv提供的API

GaussianBlur(Mat src, Mat dst, Size(11, 11), sigmax, sigmay);

其中Size(x, y), x, y 必須是正數(shù)而且是奇數(shù)

參數(shù)SigmaX表示高斯方程中X方向的標(biāo)準(zhǔn)方差

參數(shù)SigmaY表示高斯方程中X方向的標(biāo)準(zhǔn)方差

在高斯分布中,方差可以理解為這個(gè)高斯分布的平緩程度,也就是說(shuō)中間值所占比重的大小,方差越小,中間值所占比重越大,此時(shí)模糊的效果會(huì)相對(duì)更低一點(diǎn)(在同一個(gè)size下)

可視化一下你會(huì)乘的矩陣:

當(dāng)方差較大時(shí):

方差較小時(shí):

這里兩幅圖不是完全合適,只是類比

2.雙邊模糊

1.什么是雙邊模糊

由于考慮到不管是均值模糊或者高斯模糊,最后的效果都是整個(gè)圖像的模糊。有時(shí)候我們無(wú)需整體的模糊,而比如只模糊邊緣,或者只模糊細(xì)節(jié)。

而雙邊模糊便是實(shí)現(xiàn)了對(duì)邊緣信息的保留而弱化了細(xì)節(jié)。(這個(gè)效果可以用來(lái)磨皮,可以想想為啥)

實(shí)現(xiàn)的原理是我們確定一個(gè)數(shù)表示兩個(gè)像素之間的差值的閾值,一旦兩個(gè)像素之間超過(guò)了這個(gè)閾值,那么就不對(duì)這兩個(gè)像素進(jìn)行高斯模糊處理,一旦沒(méi)有超過(guò),就進(jìn)行模糊處理。因?yàn)檫吘壍貐^(qū)的像素差值是比較大的,這樣就能保留邊緣的信息。

2.opencv的API

bilateralFilter(src, dest, d=15, 150, 3);

15 –計(jì)算的半徑,半徑之內(nèi)的像數(shù)都會(huì)被納入計(jì)算,如果提供-1 則根據(jù)sigma space參數(shù)取值

150 – sigma color 決定多少差值之內(nèi)的像素會(huì)被計(jì)算

3 – sigma space 如果d的值大于0則聲明無(wú)效,否則根據(jù)它來(lái)計(jì)算d值

3.磨皮美顏效果的實(shí)現(xiàn)

1.實(shí)現(xiàn)過(guò)程

通過(guò)對(duì)雙邊模糊處理后的圖像再進(jìn)行對(duì)比度加深的操作,最后就是讓模糊的邊緣再進(jìn)行加深,幾乎回到原來(lái)的效果。而模糊效果去掉皮膚上的細(xì)節(jié),從而可以讓皮膚顯得光滑并且顏色很有光澤。

并且我利用滑軌可以動(dòng)態(tài)臺(tái)哦姐雙邊模糊的閾值從而讓你們自己控制磨皮的效果。

2.主要代碼

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
	string path = "xxxxxxxxxxxx.jpg";
	Mat img = imread(path);
	Mat img2 = Mat::zeros(img.size(), img.type());
	Mat img3;
	Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
	imshow("img1", img);
	int x = 1, y = 1;
	namedWindow("Trackbars", (10, 100));//新建了一個(gè)窗口--軌跡欄
	createTrackbar("x", "Trackbars", &x, 200);
	while (1)
	{
		bilateralFilter(img,img2,15,x,3);
		imshow("img2", img2);
		filter2D(img2, img3, img.depth(), kernel);//src.depth()表示位圖深度,和type相關(guān)
		imshow("img3", img3);
		waitKey(10); 
	}
	waitKey(0);
	return 0;
}

3.效果

原圖:

磨皮后:

(邊緣信息沒(méi)有損失,但是色塊更加均勻了還是)?

到此這篇關(guān)于OpenCV利用高斯模糊實(shí)現(xiàn)簡(jiǎn)單的磨皮美顏效果的文章就介紹到這了,更多相關(guān)OpenCV磨皮效果內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

博爱县| 周宁县| 来凤县| 香港| 保定市| 东阿县| 岑巩县| 时尚| 和龙市| 陆丰市| 田林县| 阜康市| 虹口区| 乳山市| 桃源县| 南江县| 霍城县| 哈巴河县| 深州市| 安康市| 昌黎县| 佛教| 小金县| 田林县| 台安县| 临泽县| 富顺县| 太和县| 陇西县| 汉川市| 赤城县| 宁阳县| 麟游县| 通辽市| 盐边县| 新晃| 额尔古纳市| 鄯善县| 遵义市| 金湖县| 香格里拉县|