Computer Vision Tutorial 2-8: Kennen Sie das Prinzip des Bild-Bokeh-Effekts? (mit Code)

Machen Sie es sich zur Gewohnheit, gemeinsam zu schreiben! Dies ist der 5. Tag meiner Teilnahme an der „Nuggets Daily New Plan · April Update Challenge“, klicken Sie hier, um die Details der Veranstaltung anzuzeigen .


0 wird voran geschrieben

Ich glaube, dass Schüler, die die Kamera verwendet haben, den Weichzeichnungseffekt kennen , bei dem es sich um einen Effekt handelt, der den Fokus auf das Motiv fokussiert und den Hintergrund verschwommen macht, wie z. B. der Hintergrundunschärfeeffekt am Ende dieses Artikels.
Bildbeschreibung hier einfügen

Was ist das Prinzip hinter dem Kamera-Unschärfe-Effekt? Was hat das mit Computer Vision zu tun? Dieser Artikel führt Sie durch diese Fragen.

1 Imaging kleiner Löcher

Wir wissen aus der Grundschule, dass ein Bild ohne Licht nicht existiert, und um ein Bild zu erzeugen, muss eine Szene eine oder mehrere direkte oder indirekte Lichtquellen haben.

Bildbeschreibung hier einfügenWie in der Abbildung gezeigt, wird die Beleuchtung hauptsächlich in drei Kategorien unterteilt:

  • Streuung
  • direktes Licht
  • diffuse Reflexion

Nachdem die Lichtquelle erhalten wurde, wird ein Strahl von dem Objekt zu der Detektionsebene erzeugt.

Da unzählige gestreute Lichtstrahlen die Erfassungsebene von einem bestimmten Punkt A auf dem Objekt erreichen, kann davon ausgegangen werden, dass der Abbildungspunkt A' von A gleichmäßig auf der Abbildungsebene verteilt ist, und dasselbe gilt für andere Punkte. Daher ist die Detektionsebene in diesem Fall das Aliasing unzähliger Objektbilder, was zu einer unscharfen oder sogar unmöglichen Abbildung führt.

Bildbeschreibung hier einfügen

Wenn Sie mit einem weißen Blatt Papier konfrontiert sind, können Sie Ihr Gesicht nicht sehen, nicht weil es kein Licht von Ihnen auf dem weißen Papier gibt, sondern weil sich das Licht von verschiedenen Teilen von Ihnen auf dem weißen Papier überlagert, glauben Sie mir nicht, Versuch es?

Wie mache ich Bilder auf weißem Papier?

Tatsächlich ist es sehr einfach, die Bildgebung kleiner Löcher zu verwenden , die in der Grundschule ausprobiert wurde

Bildbeschreibung hier einfügenIm Wesentlichen entspricht das kleine Loch einem ==Filter==, der nur wenige Lichtstrahlen vom Objektpunkt zurückhält, und zu diesem Zeitpunkt sollte ein klares Bild erhalten werden.

2 Optische Abbildung

Der Nachteil der Pinhole-Bildgebung besteht darin, dass das Abbildungslicht geringer ist und die Helligkeit gering ist . Um mehr Licht zu erhalten und zu verhindern, dass die Bildpunkte auf der Detektionsfläche gestreut werden, um eine Bildüberlappung zu verursachen, wird eine lichtkondensierende Linse eingeführt . Die Essenz der Linsenabbildung und der Pinhole-Abbildung besteht darin, die Unfähigkeit zur Abbildung aufgrund gestreuter Bildpunkte zu vermeiden.Die erstere verwendet kondensierendes Licht, während die letztere eine Filterung verwendet.

Bildbeschreibung hier einfügen 现代相机在应用上通常使用透镜成像,但不管是透镜成像还是小孔成像,都是计算机视觉研究的基本模型和假设,例如透视几何相机内参矩阵畸变修正等等,因此本节对于建立机器视觉的研究思维很有帮助。

3 虚化效果

介绍完前面的基础知识,终于开始图像虚化特效的原理啦!

理想透镜应保证光线聚焦于一点——焦点,这个点不会产生任何成像混叠,图像最清晰。在焦点前后光线开始四散,形成不同程度的成像重叠区域,称为弥散圆,对于人眼而言,在一定范围内影象产生的模糊是不能辨认的,不能辨认的弥散圆范围称为容许弥散圆

Bildbeschreibung hier einfügen

当对被摄主体平面调焦时,因为容许弥散圆的存在,在一定离焦范围内,成像仍然清晰,这个范围称为焦深。调整成像面和镜头距离,使成像面处于焦深内,物体可以清晰成像的过程,称为对焦

类似地,对被摄物体而言,位于调焦物平面前后的能相对清晰成像的景物间纵深距离称为景深。图像虚化效果就和这个景深有关系!

  • 景深越小,被摄物体前后能清晰成像的范围越小,也就相应地出现朦胧虚化的效果
  • 景深越大,被摄物体前后能清晰成像的范围越大,也就没有虚化效果

Bildbeschreibung hier einfügen 如何调节景深?记住一句话:光圈越大景深越小,所以拿手机拍照的时候,大光圈也就代表了虚化效果!

所以下次有机会给女生拍照的话,请先确认

“请问你喜欢小景深还是大景深?”

4 代码实战

Der Unschärfeeffekt des Kamerahintergrunds kann durch die Verwendung von geführten Filtern in der Bildverarbeitung realisiert werden.Der Quellcode lautet wie folgt.

//引导滤波器
Mat guidedFilter(Mat& srcMat, Mat& guidedMat, int radius, double eps)
{
    srcMat.convertTo(srcMat, CV_64FC1);
    guidedMat.convertTo(guidedMat, CV_64FC1);
    // 计算均值
    Mat mean_p, mean_I, mean_Ip, mean_II;
    boxFilter(srcMat, mean_p, CV_64FC1, Size(radius, radius));                      // 生成待滤波图像均值mean_p 
    boxFilter(guidedMat, mean_I, CV_64FC1, Size(radius, radius));                   // 生成引导图像均值mean_I   
    boxFilter(srcMat.mul(guidedMat), mean_Ip, CV_64FC1, Size(radius, radius));      // 生成互相关均值mean_Ip
    boxFilter(guidedMat.mul(guidedMat), mean_II, CV_64FC1, Size(radius, radius));   // 生成引导图像自相关均值mean_II
    // 计算相关系数、Ip的协方差cov和I的方差var------------------
    Mat cov_Ip = mean_Ip - mean_I.mul(mean_p);
    Mat var_I = mean_II - mean_I.mul(mean_I);
    // 计算参数系数a、b
    Mat a = cov_Ip / (var_I + eps);
    Mat b = mean_p - a.mul(mean_I);
    // 计算系数a、b的均值
    Mat mean_a, mean_b;
    boxFilter(a, mean_a, CV_64FC1, Size(radius, radius));
    boxFilter(b, mean_b, CV_64FC1, Size(radius, radius));
    // 生成输出矩阵
    Mat dstImage = mean_a.mul(srcMat) + mean_b;
    return dstImage;
}
复制代码

Wir werden beim nächsten Mal ein neues Kapitel für die verwandten Prinzipien des geführten Filters aufschlagen.

Der Filter kann in der main-Funktion aufgerufen werden und die Wirkung wird am Anfang des Textes angezeigt.

int main()
{
    Mat resultMat; 
    Mat vSrcImage[3], vResultImage[3];
    Mat vResultImage[3];    
    Mat srcImage = imread("1.jpg");
    imshow("源图像", srcImage);
    // 对源图像进行通道分离,并对每个分通道进行引导滤波
    split(srcImage, vSrcImage);
    for (int i = 0; i < 3; i++)
    {
        Mat tempImage;
        vSrcImage[i].convertTo(tempImage, CV_64FC1, 1.0 / 255.0);
        Mat cloneImage = tempImage.clone();
        Mat resultImage = guidedFilter(tempImage, cloneImage, 5, 0.3);
        vResultImage[i] = resultImage;
    }
    // 将分通道导向滤波后结果合并
    merge(vResultImage, 3, resultMat);
    imshow("背景虚化特效", resultMat);
    waitKey(0);
    return 0;
}
复制代码

Ein kleiner Bildunschärfeeffekt, der verschiedene Prinzipien der optischen Bildgebung beinhaltet, bildet die Grundlage des Computer-Vision-Modells. Vielleicht fühlst du dich wie jeder von uns sehr klein, vielleicht bist du das Rückgrat der anderen!

Bitte achten Sie auf die vollständige Projektdatei~


Kursübersicht Computer Vision Fundamentals

Kapitel Nr. Inhalt

  0 Farbräume und digitale Bildgebung

  1 Grundlagen der Computergeometrie

  2 Bildverbesserung, Filterung, Pyramiden

  3 Bildmerkmalsextraktion

  4 Beschreibung der Bildfunktion

  5 Bildmerkmalsabgleich

  6 Stereoskopisches Sehen

  7 Projektkampf

Weitere hochwertige Inhalte und unterstützende Codes sind in meinem KI-Kanal "AI Technology Club" willkommen.

Supongo que te gusta

Origin juejin.im/post/7082937637576638500
Recomendado
Clasificación