日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机视觉及OpenCV入门简介

發(fā)布時間:2023/12/31 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机视觉及OpenCV入门简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

計算機(jī)視覺及OpenCV入門簡介

這是一篇實驗室培訓(xùn)過后寫的感悟,附帶授課大佬及實驗室GitHub地址:

  • 大佬:https://github.com/shentibeitaokongle
  • 實驗室:https://github.com/android-nuc

計算機(jī)視覺

什么是計算機(jī)視覺?

計算機(jī)視覺是指用攝影機(jī)和電腦代替人眼對目標(biāo)進(jìn)行識別、跟蹤和測量等機(jī)器視覺,并進(jìn)一步做圖形處理,使電腦處理成為更適合人眼觀察或傳送給儀器檢測的圖像。

簡單概括為:

  • 讓計算機(jī)去認(rèn)知世界,人工智能
  • 圖像處理 + 機(jī)器學(xué)習(xí) + 三維理論
  • 計算機(jī)視覺能干什么?

    • 圖像識別
    • 無人汽車
    • AR、VR
    • 三維重建
    • 工程測繪
    • 圖像分割
    • ……

    計算機(jī)視覺(CV)與計算機(jī)圖形學(xué)(CG)的區(qū)別

    計算機(jī)圖形學(xué)(Computer Graphics)和計算機(jī)視覺(Computer Vision)是同一過程的兩個方向。CG將抽象的語義信息轉(zhuǎn)化成圖像,而CV是從圖像中提取抽象的語義信息。

    計算機(jī)圖形學(xué):輸入的是對虛擬場景的描述,通常為多邊形數(shù)組,而每個多邊形由三個頂點組成,每個頂點包括三維坐標(biāo)、貼圖坐標(biāo)、RGB顏色等。輸出的是圖像,即二維像素數(shù)組。

    計算機(jī)視覺:輸入的是圖像或圖像序列,通常來自相機(jī)、攝像頭或視頻文件。輸出的是對于圖像序列對應(yīng)的真實世界的理解,比如檢測人臉、識別車牌。

    參考文章:https://blog.csdn.net/hanlin_tan/article/details/50447895

    CV對大學(xué)生比賽、就業(yè)、讀研有什么用?

    • CV的魅力在于各種高深的研究方向和算法,有廣泛的應(yīng)用場景,結(jié)合CV會有很多有趣的idea
    • 圖像處理,或者視覺相關(guān)的崗位薪資比較高
    • 計算機(jī)視覺仍然是計算機(jī)科研的熱門方向

    OpenCV

    下面是對OpenCV的簡單介紹,應(yīng)用實例在后面。

    什么是OpenCV?

    中文名:開源計算機(jī)視覺庫
    英文全稱:Open Source Computer Vision Library

    OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機(jī)視覺庫,可以運行在Linux、Windows和Mac OS操作系統(tǒng)上。它由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機(jī)視覺方面的很多通用算法。它支持CUDA加速,現(xiàn)在已經(jīng)發(fā)展到了OpenCV4.0.1版本。

    為什么會有OpenCV?

    計算機(jī)視覺市場巨大而且持續(xù)增長,且這方面沒有標(biāo)準(zhǔn)API,如今的計算機(jī)視覺軟件大概有以下三種:
    1、研究代碼(慢,不穩(wěn)定,獨立并與其他庫不兼容)
    2、耗費很高的商業(yè)化工具(比如Halcon, MATLAB+Simulink)
    3、依賴硬件的一些特別的解決方案(比如視頻監(jiān)控,制造控制系統(tǒng),醫(yī)療設(shè)備)這是如今的現(xiàn)狀,而標(biāo)準(zhǔn)的API將簡化計算機(jī)視覺程序和解決方案的開發(fā),OpenCV致力于成為這樣的標(biāo)準(zhǔn)API。
    OpenCV致力于真實世界的實時應(yīng)用,通過優(yōu)化的C代碼的編寫對其執(zhí)行速度帶來了可觀的提升,并且可以通過購買Intel的IPP高性能多媒體函數(shù)庫(Integrated Performance Primitives)得到更快的處理速度。

    圖像

    圖像的取樣與量化

    計算機(jī)保存的圖像都是一個一個的像素點,稱為數(shù)字圖像。我們想要在計算機(jī)中處理圖像,就必須把真實的圖像通過數(shù)字化轉(zhuǎn)變成計算機(jī)能夠接受的顯示和存儲格式,然后再用計算機(jī)進(jìn)行分析處理。
    圖像數(shù)字化過程由圖像的取樣與量化來完成。取樣就是要用多少點來描述一幅圖像,取樣結(jié)果質(zhì)量的高低就是用圖像的分辨率來衡量的;量化是指要使用多大范圍的數(shù)值來表示圖像采樣之后的一個點。也可以說,數(shù)字化坐標(biāo)值稱為取樣,數(shù)字化幅度值稱為量化。


    上圖左側(cè)是要數(shù)字化的物體,右側(cè)是數(shù)字化后的圖像,每個小格即為一個像素點。


    推薦文章:https://www.cnblogs.com/yunfung/p/6753337.html
    https://blog.csdn.net/zqhwando/article/details/78871140

    圖像還能看成是什么?

    圖像由一組波組成,我們要把圖像進(jìn)行數(shù)字化存儲,就需要提到一個概念——傅里葉級數(shù)。



    傅里葉級數(shù)指任何周期函數(shù)都可以用正弦函數(shù)和余弦函數(shù)構(gòu)成的無窮級數(shù)來表示。

    傅里葉變換(空間域->頻率域)

    傅立葉變換,表示能將滿足一定條件的某個函數(shù)表示成三角函數(shù)(正弦和/或余弦函數(shù))或者它們的積分的線性組合。
    傅里葉變換的本質(zhì)是將一個周期信號分解成無限多分開的(離散的)正弦波。




    為什么要提到傅里葉變換呢?因為當(dāng)你在二維很難處理一個圖像的時候,可能換個“角度”處理起來卻很簡單,這是傅里葉變換的一個魅力所在。

    例如,處理一張異常圖片,頻率方向無法進(jìn)行或者工作量太大時,可能改為在時間方向處理會很簡單。

    參考文章:https://blog.csdn.net/yangdashi888/article/details/53215256

    圖像濾波(空間域濾波)

    圖像濾波,即在盡量保留圖像細(xì)節(jié)特征的條件下對目標(biāo)圖像的噪聲進(jìn)行抑制,是圖像預(yù)處理中不可缺少的操作,其處理效果的好壞將直接影響到后續(xù)圖像處理和分析的有效性和可靠性。其實質(zhì)是減少數(shù)字圖像在使用前的的噪聲污染。

    線性濾波可以說是圖像處理最基本的方法,它可以允許我們對圖像進(jìn)行處理,產(chǎn)生很多不同的效果。做法很簡單。首先,我們有一個二維的濾波器矩陣(有個高大上的名字叫卷積核or濾波器)和一個要處理的二維圖像。然后,對于圖像的每一個像素點,計算它的鄰域像素和濾波器矩陣的對應(yīng)元素的乘積,然后加起來,作為該像素位置的值。這樣就完成了濾波過程。

    卷積

    卷積可以看作是一種結(jié)合了矩陣運算的計算方法,它是是分析數(shù)學(xué)中一種重要的運算。

    設(shè):f(x),g(x)是R1上的兩個可積函數(shù),作積分:

    可以證明,關(guān)于幾乎所有的實數(shù)x,上述積分是存在的。這樣,隨著x的不同取值,這個積分就定義了一個新函數(shù) h(x),稱為函數(shù) f 與 g 的卷積,記為 h(x) = (f * g)(x)。

    容易驗證,(f * g)(x) = (g * f)(x),并且(f * g)(x)仍為可積函數(shù)。

    卷積與傅里葉變換有著密切的關(guān)系。利用一點性質(zhì),即兩函數(shù)的傅里葉變換的乘積等于它們卷積后的傅里葉變換,能使傅里葉分析中許多問題的處理得到簡化。

    卷積關(guān)系最重要的一種情況,就是在信號與線性系統(tǒng)或數(shù)字信號處理中的卷積定理。利用該定理,可以將時間域或空間域中的卷積運算等價為頻率域的相乘運算,從而利用FFT等快速算法,實現(xiàn)有效的計算,節(jié)省運算代價。

    C++語言代碼:

    void convolution(float *input1, float *input2, float *output, int mm, int nn) { float *xx = new float[mm+nn-1]; // do convolution for (int i = 0; i < mm+nn-1; i++){ xx[i] = 0.0;for (int j = 0; j < mm; j++) { if (i-j > 0 && i-j < nn)xx[i] += input1[j] * input2[i-j]; } }// set value to the output array for (int i = 0; i < mm; i++) output[i] = xx[i + (nn-1) / 2];delete[] xx; }

    示例:

    • 原圖

    • 黑白

    VideoCapture video(0);Mat src = imread("F:/C/picture/lena.JPG", 1);cvtColor(src, src, COLOR_BGR2GRAY);namedWindow("src", WINDOW_AUTOSIZE);imshow("src", src);
    • 卷積核 or 濾波器:[ -1, 0, 1 ]
    VideoCapture video(0);Mat src = imread("F:/C/picture/lena.JPG", 1);cvtColor(src, src, COLOR_BGR2GRAY);namedWindow("src", WINDOW_AUTOSIZE);imshow("src", src);Mat dImg = Mat(src.rows, src.cols - 2, CV_8UC1);for (int i = 0; i < src.rows; i++){for (int j = 1; j < src.cols - 1; j++){dImg.at<uchar>(i, j - 1) = src.at<uchar>(i, j + 1) - src.at<uchar>(i, j - 1);}}namedWindow("dst", CV_WINDOW_AUTOSIZE);imshow("dst", dImg);waitKey(0);

    另附卷積與相關(guān)的區(qū)別:https://blog.csdn.net/m0_37407756/article/details/78593917

    高斯模糊

    高斯模糊,也叫高斯平滑,用來減少圖像噪聲以及降低細(xì)節(jié)層次。從數(shù)學(xué)的角度來看,圖像的高斯模糊過程就是圖像與正態(tài)分布做卷積。


    可以將高斯模糊簡單理解為圖像中的每個像素都重新設(shè)置像素值為周邊相鄰像素的平均值,相鄰像素的范圍越大,模糊程度就越大。需要注意的是,高斯模糊應(yīng)該使用加權(quán)平均,因為距離當(dāng)前像素越近的像素與其聯(lián)系越密切。

    由于正態(tài)分布又叫作高斯分布,所以這項技術(shù)就叫作高斯模糊。由于高斯函數(shù)的傅立葉變換是另外一個高斯函數(shù),所以高斯模糊對于圖像來說就是一個低通濾波器。

    還是用前面的黑白圖片做示范:

    代碼:

    //5x5卷積模板Mat model = Mat(5, 5, CV_64FC1);double sigma = 80;for (int i = -2; i <= 2; i++){for (int j = -2; j <= 2; j++){model.at<double>(i + 2, j + 2) = exp(-(i * i + j * j) / (2 * sigma * sigma)) / (2 * PI * sigma * sigma);}}double gaussSum = 0;gaussSum = sum(model).val[0];for (int i = 0; i < model.rows; i++){for (int j = 0; j < 5; j++){model.at<double>(i, j) = model.at<double>(i, j) / gaussSum;}}Mat dst = Mat(src.rows - 4, src.cols - 4, CV_8UC1);for (int i = 2; i < src.rows - 2; i++){for (int j = 2; j < src.cols - 2; j++){double sum = 0;for (int m = 0; m < model.rows; m++){for (int n = 0;n < model.cols; n++){sum += (double)src.at<uchar>(i + m - 2, j + n - 2) * model.at<double>(m, n);}}dst.at<uchar>(i - 2, j - 2) = (uchar)sum;}}namedWindow("gaussBlur", WINDOW_AUTOSIZE);imshow("gaussBlur", dst);waitKey(0);

    正態(tài)分布



    參考文章:https://blog.csdn.net/zouxy09/article/details/49080029

    濾波常用API

    • 邊緣檢測(微分)
    • Sobel算子,拉普拉斯算子
    • 圖像去噪/平滑(積分)
    • GaussianBlur(高斯模糊)

    相關(guān)會議及期刊

    以下是收集的一些與計算機(jī)視覺相關(guān)的會議及期刊,感興趣的話可以看看:

    會議

    • 頂級
      ICCV:International Conference on Computer Vision,國際計算機(jī)視覺大會
      2019官網(wǎng):http://iccv2019.thecvf.com/
      CVPR:International Conference on Computer Vision and Pattern Recognition,國際計算機(jī)視覺與模式識別大會
      2019官網(wǎng):http://cvpr2019.thecvf.com/
      ECCV:European Conference on Computer Vision,歐洲計算機(jī)視覺大會
      2018官網(wǎng):https://eccv2018.org/
    • 較好
      ICIP:International Conference on Image Processing,國際圖像處理大會
      BMVC:British Machine Vision Conference,英國機(jī)器視覺大會
      ICPR:International Conference on Pattern Recognition,國際模式識別大會
      ACCV:Asian Conference on Computer Vision,亞洲計算機(jī)視覺大會

    期刊

    • 頂級
      PAMI:IEEE Transactions on Pattern Analysis and Machine Intelligence,IEEE 模式分析與機(jī)器智能雜志
      官網(wǎng):https://ieeexplore.ieee.org/Xplore/home.jsp
      IJCV:International Journal on Computer Vision,國際計算機(jī)視覺雜志
      官網(wǎng):https://lmb.informatik.uni-freiburg.de/index.php
    • 較好
      TIP:IEEE Transactions on Image Processing,IEEE圖像處理雜志
      CVIU:Computer Vision and Image Understanding,計算機(jī)視覺與圖像理解
      PR:Pattern Recognition,模式識別
      PRL:Pattern Recognition Letters,模式識別快報

    總結(jié)

    以上是生活随笔為你收集整理的计算机视觉及OpenCV入门简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。