0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于MATLAB 圖像處理算法的作用分析介紹

MATLAB ? 來源:djl ? 2019-09-12 14:31 ? 次閱讀

得益于 Raspberry Pi 等低成本硬件平臺,現(xiàn)在比以往更容易在硬件上對圖像處理算法進行原型驗證。大多數(shù)圖像處理算法需要進行大量計算,在嵌入式平臺上以可接受的幀頻運行它們非常困難。盡管 Raspberry Pi 在運行簡單的圖像處理算法時游刃有余,但大圖像和復(fù)雜算法應(yīng)在 NVIDIAJetson 等功能強大的硬件上運行。

本文將以色度鍵控效果為例,介紹在嵌入式硬件上部署 MATLAB 圖像處理算法的簡單工作流。我們將使用 MATLAB Coder 通過算法生成C代碼,然后使用在硬件上運行的實用程序在 Raspberry Pi 板卡上進行算法原型驗證。最后,我們將算法移植至 NVIDIA Jetson Tx1 平臺以保證實時性能。

色度鍵控算法

色度鍵控廣泛用于電視天氣預(yù)報、電影制作和圖片編輯應(yīng)用程序,它是一種視頻處理技術(shù),首先針對單色背景(如綠色屏幕)拍攝前景對象,然后用不同場景(圖1)替換該背景。

關(guān)于MATLAB 圖像處理算法的作用分析介紹

圖1:應(yīng)用色度鍵控之前和之后的示例

色度鍵控算法將圖像中的每個像素與代表單背景色的基準(zhǔn)色進行對比。如果像素顏色與基準(zhǔn)色足夠接近,像素將由之前所選場景圖像的對應(yīng)像素替換。從數(shù)學(xué)上講,色度鍵控算法采用以下公式:

關(guān)于MATLAB 圖像處理算法的作用分析介紹

其中代表進行色度鍵控后位置?(j,k)?處的最終像素值,是與原始圖像對應(yīng)的像素值,是代表替換單一背景色的場景的像素值,m(j,k)∈[0,1]?是掩碼值。掩碼數(shù)值?m(j,k)?對于前景像素應(yīng)該為?1,對于背景像素應(yīng)該為?0。0?與?1?之間的掩碼值可提供從背景到前景的平滑過渡。

每個像素的掩碼值通常在 YcbCr 顏色空間而不是普通的 RGB 顏色空間中進行計算。YcbCr 圖像的 Y 分量代表亮度分量,用于確定圖像的明暗度。Cb 和 Cr 分量代表色度分量,用于衡量與基準(zhǔn)色的相似度。由于僅使用圖像的 Cb 和 Cr 分量衡量顏色相似度,該算法在應(yīng)對單一背景色明暗區(qū)域的亮度值差異時十分穩(wěn)健。

為衡量像素色與基準(zhǔn)色的相似性,我們在色度空間中使用歐氏距離平方:

關(guān)于MATLAB 圖像處理算法的作用分析介紹

最后,使用以下公式計算圖像中位置(j,k) 的掩碼值:

關(guān)于MATLAB 圖像處理算法的作用分析介紹

其中 t1 和 t2 ( t2 > t1)代表要確定的閾值。

MATLAB實現(xiàn)

以下是色度控鍵算法的 MATLAB 實現(xiàn):

關(guān)于MATLAB 圖像處理算法的作用分析介紹

在 MATLAB 中,圖像由類型 uint8 的 [N,M, 3] 數(shù)組表示。這表示,在執(zhí)行數(shù)學(xué)操作前,我們需要將圖像數(shù)據(jù)類型轉(zhuǎn)換為 “double”。為避免背景到前景的快速突變,我們對算出的掩模采用高斯過濾器進行濾波。

確定基準(zhǔn)色和閾值

色度鍵控算法需要基準(zhǔn)色和閾值。使用 MATLAB Raspberry Pi 支持包中的相機接口,我們拍攝了實際場景的圖像。隨后,我們可以憑借經(jīng)驗確定背景的適用基準(zhǔn)色和相應(yīng)的閾值。

關(guān)于MATLAB 圖像處理算法的作用分析介紹

img = snapshot(cam); 命令繪制 MATLAB 中 Raspberry Pi 相機拍攝的圖像。我們使用 MATLAB 繪制中的 Data Cursor 工具指定背景顏色(圖2)。

關(guān)于MATLAB 圖像處理算法的作用分析介紹

圖2:MATLAB 中用于確定背景色值的 Data Cursor 工具

要確定閾值,我們將循環(huán)運行算法并調(diào)整閾值:

關(guān)于MATLAB 圖像處理算法的作用分析介紹

當(dāng)運行代碼時,我們會獲得帶有所選背景的圖像(圖3)。

圖3:左:原始圖像;右:運行色度控鍵算法后獲得的圖像

將色度鍵控算法部署到 Raspberry Pi

在部署代碼前,我們需要編寫一段包含有色度鍵控算法的循環(huán)體,循環(huán)體中還包括從相機拍攝圖像,并在 Raspberry Pi 連接的顯示器上顯示:

關(guān)于MATLAB 圖像處理算法的作用分析介紹

matlab.raspi.webcam 和 matlab.raspi.SDLVideo Display 是在硬件上運行實用程序的 System objects,它們可簡化部署工作流程中相機的使用和 Raspberry Pi 顯示。要編譯并運行代碼,我們可執(zhí)行以下命令:

關(guān)于MATLAB 圖像處理算法的作用分析介紹

runOnHardware 功能會為 Raspberry Pi 硬件創(chuàng)建 MATLAB Coder 配置,為 chromaKeyApp.m 生成代碼并對其部署。為了以合理的幀頻運行算法,圖像大小可縮小到 640x480 或 320x240。

生成GPU代碼

算法在 Raspberry Pi 上運行,但是它不會實現(xiàn)我們需要的實時性能。為了加快算法的速度,我們要使用 GPU Coder 將其部署到 NVIDIA Jetson 平臺。我們需要生成 GPU 代碼以利用算法中的內(nèi)在并行性。首先,我們會編寫 main 函數(shù)進行封裝,以利用 OpenCV 訪問連接到 NVIDIA Jetson 的 USB 相機。此功能將視頻幀從相機送到我們的 chromaKey 算法,隨后在屏幕上顯示輸出內(nèi)容。

生成 GPU 代碼后,我們首先創(chuàng)建 GPU Coder 配置對象、設(shè)置 GPU 參數(shù)以指向 NVIDIA Jetson 硬件平臺,然后加入自定義的 main 函數(shù)。我們不會在 MATLAB 主機上編譯代碼,因為我們將專門為 NVIDIA Jetson 平臺生成代碼。我們將創(chuàng)建腳本來設(shè)置 GPU Coder 配置、輸入示例數(shù)據(jù),并為我們的應(yīng)用生成源代碼。

關(guān)于MATLAB 圖像處理算法的作用分析介紹

我們隨后在 MATLAB 中運行腳本為 chromaKey 算法生成 CUDA 代碼。

向 NVIDIA Jetson 部署綠屏算法

要向 NVIDIA Jetson 部署生成的代碼,我們需要使用以下 MATLAB 命令將全部所需文件打包到 codegen 目錄。

關(guān)于MATLAB 圖像處理算法的作用分析介紹

接下來,將生成的所有 codegen 文件夾從主機復(fù)制到 NVIDIA Jetson 控制板。在傳輸文件后,我們直接登錄到 NVIDIA Jetson 以構(gòu)建并運行應(yīng)用程序。

登錄到 NVIDIA Jetson 后,我們運行 NVIDIA 提供的 jetson_clocks.sh 腳本以將平臺性能最大化、切換到包含生成的源代碼(之前傳輸)的 codegen 目錄,然后執(zhí)行以下顯示的編譯命令。

在可執(zhí)行程序(chromaKey)Build 后,使用 NVIDIA Jetson 控制臺上的 USB 網(wǎng)絡(luò)攝像頭通過以下命令運行應(yīng)用程序。每秒顯示幀數(shù)將顯示在輸出窗口中。

關(guān)于MATLAB 圖像處理算法的作用分析介紹

圖 4 顯示出現(xiàn)綠屏效果前后 NVIDIA Jetson 板卡的 USB 相機的輸出內(nèi)容。

圖4:應(yīng)用綠屏效果前后的示例

Raspberry Pi 和 NVIDIA Jetson 性能對比

NVIDIA Jetson 上 GPU 更加強大的并行處理能力極大地提高了算法的性能。Raspberry Pi 實現(xiàn)了約 1 幀/秒的幀頻,而 NVIDIA Jetson 對于 1280x720 大小的圖像實現(xiàn)了 20 幀/秒以上的幀頻。也就是說,無需對算法進行任何修改或優(yōu)化,我們便獲得了 20 倍以上的加速。通過優(yōu)化 MATLAB 算法提高 GPU 代碼的生成效率,我們可以實現(xiàn)更高的性能。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 圖像處理
    +關(guān)注

    關(guān)注

    27

    文章

    1296

    瀏覽量

    56822
  • 攝像頭
    +關(guān)注

    關(guān)注

    60

    文章

    4854

    瀏覽量

    95989
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7586

    瀏覽量

    89011
收藏 人收藏

    評論

    相關(guān)推薦

    DFT在圖像處理中的作用 DFT在音頻信號處理中的應(yīng)用

    處理中的幾個主要作用: 頻域濾波 :DFT允許我們分析圖像的頻率成分,從而可以設(shè)計濾波器來增強或抑制特定頻率的信號,例如低通濾波器可以減少圖像
    的頭像 發(fā)表于 12-20 09:18 ?410次閱讀

    Simulink與 MATLAB 的結(jié)合使用 Simulink中的信號處理方法

    被快速搭建和仿真。 MATLAB 在信號處理中的作用 MATLAB 是一個強大的數(shù)學(xué)計算工具,它提供了大量的內(nèi)置函數(shù)和工具箱,用于信號的生成、分析
    的頭像 發(fā)表于 12-12 09:25 ?419次閱讀

    傅立葉變換在圖像處理中的作用

    傅里葉變換在圖像處理中發(fā)揮著至關(guān)重要的作用。以下是傅里葉變換在圖像處理中的幾個主要作用: 一、
    的頭像 發(fā)表于 12-06 16:55 ?605次閱讀

    ?ISP算法及架構(gòu)分析介紹

    一、ISP算法及架構(gòu)分析介紹 ISP即Image Signal Processor,是一種圖像處理架構(gòu),不是我們用的下載器。 ISP其實算是
    的頭像 發(fā)表于 11-26 10:05 ?559次閱讀
    ?ISP<b class='flag-5'>算法</b>及架構(gòu)<b class='flag-5'>分析</b><b class='flag-5'>介紹</b>

    UWB模塊的功耗分析

    ,功耗與模塊中使用的芯片、電路設(shè)計、封裝技術(shù)等因素密切相關(guān)。合理的硬件設(shè)計可以有效降低功耗。 信號處理算法 :不同的信號處理算法會對功耗產(chǎn)生不同的影響。因此,在選擇和優(yōu)化算法時,需要綜合考慮功耗效率。 通信協(xié)議 :不同的通信協(xié)
    的頭像 發(fā)表于 10-31 14:10 ?502次閱讀

    FPGA在圖像處理領(lǐng)域的優(yōu)勢有哪些?

    。這種并行處理能力使得FPGA在處理大規(guī)模圖像數(shù)據(jù)時表現(xiàn)出色,能夠?qū)崟r完成復(fù)雜的圖像處理算法。 二、高靈活性 FPGA具有很高的靈活性,可以
    發(fā)表于 10-09 14:36

    圖像識別算法有哪幾種

    圖像識別算法是計算機視覺領(lǐng)域的核心技術(shù)之一,它通過分析處理圖像數(shù)據(jù),實現(xiàn)對圖像中的目標(biāo)、場景和
    的頭像 發(fā)表于 07-16 11:22 ?1212次閱讀

    圖像識別算法都有哪些方法

    圖像識別算法是計算機視覺領(lǐng)域的核心任務(wù)之一,它涉及到從圖像中提取特征并進行分類、識別和分析的過程。隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,圖像識別
    的頭像 發(fā)表于 07-16 11:14 ?5810次閱讀

    圖像識別算法的優(yōu)缺點有哪些

    圖像識別算法可以快速地處理大量圖像數(shù)據(jù),提高工作效率。與傳統(tǒng)的人工識別方法相比,圖像識別算法
    的頭像 發(fā)表于 07-16 11:09 ?1783次閱讀

    利用Matlab函數(shù)實現(xiàn)深度學(xué)習(xí)算法

    Matlab中實現(xiàn)深度學(xué)習(xí)算法是一個復(fù)雜但強大的過程,可以應(yīng)用于各種領(lǐng)域,如圖像識別、自然語言處理、時間序列預(yù)測等。這里,我將概述一個基本的流程,包括環(huán)境設(shè)置、數(shù)據(jù)準(zhǔn)備、模型設(shè)計、訓(xùn)
    的頭像 發(fā)表于 07-14 14:21 ?2378次閱讀

    FPGA設(shè)計經(jīng)驗之圖像處理

    今天和大俠簡單聊一聊基于FPGA的圖像處理,之前也和各位大俠聊過相關(guān)的圖像處理,這里面也超鏈接了幾篇,具體如下: 圖像邊緣檢測
    發(fā)表于 06-12 16:26

    基于FPGA的實時邊緣檢測系統(tǒng)設(shè)計,Sobel圖像邊緣檢測,F(xiàn)PGA圖像處理

    ,利用乒乓操作和 SDRAM 緩存圖像,可以實時提取視頻圖像的邊緣特征。文中對比了 MATLAB 和 FPGA 的處理效果,由于 FPGA 對算法
    發(fā)表于 05-24 07:45

    MATLAB信號處理常用函數(shù)詳解

    MATLAB是一款功能強大的數(shù)學(xué)軟件,尤其在信號處理領(lǐng)域,它提供了眾多的函數(shù)和工具箱,使得信號的分析處理、仿真變得簡單而高效。本文將詳細介紹
    的頭像 發(fā)表于 05-17 14:31 ?2487次閱讀

    基于MATLAB的信號處理系統(tǒng)與分析

    在信息技術(shù)日新月異的今天,信號處理分析技術(shù)在通信、控制、生物醫(yī)學(xué)、圖像處理等領(lǐng)域的應(yīng)用日益廣泛。MATLAB作為一款功能強大的數(shù)學(xué)軟件,為
    的頭像 發(fā)表于 05-17 14:24 ?1172次閱讀

    請問有人用過瑞芯微自定義3A算法模塊嗎

    目前也研究了好一陣了,想請教一下如何開發(fā)自己的3A算法庫或者別的圖像處理算法庫。想和各位討論一下
    發(fā)表于 01-25 10:15