OpenCV中的normalize函數以及NORM_MINMAX、NORM_INF、NORM_L1、NORM_L2具體應用介紹

在OpenCV中,normalize函數用于將圖像或矩陣的值規范化到一個特定的范圍內。這在圖像處理中非常有用,比如在調整圖像的對比度、準備數據進行機器學習處理時。規范化可以提高不同圖像之間的可比性,或是為了滿足特定算法對數據范圍的要求。

normalize

void normalize(InputArray src, InputOutputArray dst, double alpha = 1, double beta = 0, int norm_type = NORM_L2, int dtype = -1, InputArray mask = noArray());
  • src:輸入數組(可以是圖像)。
  • dst:輸出數組,存儲規范化后的結果。dst可以和src是同一個數組。
  • alpha:規范化到范圍的下限(當norm_type=NORM_MINMAX時)。
  • beta:規范化到范圍的上限(當norm_type=NORM_MINMAX時)。
  • norm_type:規范化的類型。最常用的是NORM_MINMAX,用于將數據線性變換到alpha,betaalpha,beta區間。其他選項包括NORM_L1、NORM_L2等,用于不同的數學規范化操作。
  • dtype:輸出數組的深度。當值為-1時,輸出數組和輸入數組的深度相同。可以指定為CV_32F等,以改變輸出數據的類型。
  • mask:可選的操作掩碼,用于指定要規范化哪些數組元素。

norm_type

norm_type=NORM_MINMAX

最常用的規范化類型,它將輸入數組的所有元素線性縮放到一個指定的范圍內(通常是[alpha, beta])。對于數組中的每個元素x,轉換后的值x’計算如下:
在這里插入圖片描述其中minValmaxVal分別是數組中的最小值和最大值。
應用場景:圖像處理、數據預處理。
用途:將數據規范化到一個特定的范圍內,常用于調整圖像亮度和對比度,或在輸入機器學習模型前將特征縮放到同一范圍。這有助于提高算法的收斂速度和精度。
優勢:簡單直觀,易于實現,可以使數據分布更均勻。

norm_type=NORM_INF

此規范化類型將數組的所有元素縮放,使得結果數組的最大絕對值等于alpha。具體算法是將每個元素x除以數組的最大絕對值maxVal,然后乘以alpha:
在這里插入圖片描述
應用場景:優化問題、數值計算。
用途:限制數組或向量的無窮范數(即最大絕對值)。在某些優化問題中,可能需要將解的范圍限制在一定界限內,使用NORM_INF規范化可以達到這一目的。
優勢:保證了數據中沒有極端的大值,有利于數值穩定性

norm_type=NORM_L1

NORM_L1規范化使得結果數組的L1范數(即數組元素絕對值之和)等于alpha。每個元素x的計算公式為:
在這里插入圖片描述 應用場景:稀疏編碼、特征選擇、壓縮感知。
用途:L1規范化傾向于產生稀疏的解,即大部分元素為零,少數元素非零。這在特征選擇中特別有用,可以自動地忽略不重要的特征。
優勢:促進稀疏性,有助于提高模型的可解釋性,減少模型復雜度。

norm_type=NORM_L2

NORM_L2規范化使得結果數組的L2范數(即數組元素的平方和的平方根)等于alpha。每個元素x的計算公式為:
在這里插入圖片描述
應用場景:機器學習、信號處理、圖像去噪。
用途:L2規范化傾向于使得所有元素的大小都差不多,這在避免過擬合(如機器學習中的權重衰減)、信號去噪(通過最小化能量)等場景中非常有用。
優勢:防止數據中的個別點對總體結果產生過大影響,提高模型的泛化能力。

norm_type總結

  • NORM_MINMAX適用于需要將數據規范化到相同尺度的場景。
  • NORM_INF適用于需要控制數據的最大值不超過特定閾值的場景。
  • NORM_L1適用于需要稀疏解的場景,如特征選擇或構建稀疏模型。
  • NORM_L2適用于需要平滑解、防止過擬合的場景,如機器學習中的正則化處理。

舉例(norm_type=NORM_MINMAX)

//圖像像素歸一化
void QuickDemo::normalize_pixel_demo(Mat &image){Mat dst;image.convertTo(image, CV_32F);//把無符號整型轉換為浮點型std::cout << "image raw type:"<<image.type() << std::endl;//16---代表CV_8UC3std::cout << "image convertTo CV_32F type:" << image.type() << std::endl;//21---CV_32FC3normalize(image, dst,2.0,0,NORM_MINMAX );std::cout << "CV_32F image NORM_MINMAX type:" << dst.type() << std::endl;//21---CV_32FC3imshow("NORM_MINMAX image", dst);
}

在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696475.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696475.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696475.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數的反碼和補碼表示

2.反碼 反碼的表示方法是: 正數的反碼是其本身負數的反碼是在其原碼的基礎上,符號位不變&#xff0c;其余各個位取反 [1][000000011原[000000011反[-1][10000001]原[11111110]反 3.補碼 補碼的表示方法是: 正數的補碼就是其本身 負數的補碼是在其原碼的基礎上,符號位不變,其余各…

36、IO進程線程/進程和線程之間的通信練習

一、使用有名管道完成兩個進程的相互通信(提示&#xff1a;可以使用多進程或多線程完成)。 代碼1&#xff1a;創建兩個有名管道文件 #include<myhead.h>int main(int argc, const char *argv[]) {if(mkfifo("./mingtohua",0664)-1)//創建小明向小華發信息的管…

Stable Diffusion 繪畫入門教程(webui)-ControlNet(深度Depth)

上篇文章介紹了線稿約束&#xff0c;這篇文章介紹下深度Depth 文章目錄 一、選大模型二、寫提示詞三、基礎參數設置四、啟用ControlNet 顧名思義&#xff0c;就是把原圖預處理為深度圖&#xff0c;而深度圖可以區分出圖像中各元素的遠近關系&#xff0c;那么啥事深度圖&#xf…

c/c++ | 字符串函數總結 | 為什么總喜歡糾結sizeof 和strlen 呢?

其實時間長了&#xff0c;稍微研究后&#xff0c;再來品味&#xff0c;別有一番滋味 總是看著混亂&#xff0c;但是靜下來看&#xff0c;還是能琢磨透的&#xff0c;只是看著復雜&#xff0c;本質是兩套風格&#xff0c;然后又要有交集&#xff0c;所以就看起來復雜 // 首先字符…

目標管理SMART原則

SMART原則是一種目標管理方法&#xff0c;它包括以下五個要素&#xff1a; 具體性&#xff08;Specific&#xff09;&#xff1a;目標應該是明確的&#xff0c;具體地說明要達成的行為標準。例如&#xff0c;一個目標可能描述為“減少客戶投訴率”&#xff0c;而不是“增強客戶…

本機防攻擊簡介

定義 在網絡中&#xff0c;存在著大量針對CPU&#xff08;Central Processing Unit&#xff09;的惡意攻擊報文以及需要正常上送CPU的各類報文。針對CPU的惡意攻擊報文會導致CPU長時間繁忙的處理攻擊報文&#xff0c;從而引發其他業務的中斷甚至系統的中斷&#xff1b;大量正常…

惠爾頓 網絡安全審計系統 任意文件讀取漏洞復現

0x01 產品簡介 惠爾頓網絡安全審計產品致力于滿足軍工四證、軍工保密室建設、國家涉密網絡建設的審計要求&#xff0c;規范網絡行為&#xff0c;滿足國家的規范&#xff1b;支持1-3線路的internet接入、1-3對網橋&#xff1b;含強大的上網行為管理、審計、監控模塊&#xff1b…

【2024軟件測試面試必會技能】Requests(5):Requests模塊_設置代理

設置代理 代理&#xff08;英語&#xff1a;Proxy&#xff09;&#xff0c;也稱網絡代理&#xff0c;是一種特殊的網絡服務&#xff0c;英文全稱是&#xff08;Proxy Server&#xff09;&#xff0c;其功 能就是代理網絡用戶去取得網絡信息。形象的說&#xff1a;它是網絡信息…

正向代理和反向代理釋義

代理 客戶端 代理 服務端 對客戶端而言&#xff0c;代理是服務端&#xff1b;對服務端而言&#xff0c;代理是客戶端。這個很好理解吧&#xff0c;以祖孫三代關系為例&#xff0c;爸爸在兒子面前是爸爸&#xff0c;爸爸在爺爺面前是兒子。 無論是正向代理還是反向代理&#…

Android14 InputManager-ANR原理

目標窗口查找時&#xff0c;作為派發目標的窗口必須已經準備好接收新的輸入事件&#xff0c;否則判定窗口處于未響應狀態&#xff0c;終止事件的派發過程&#xff0c;并在一段時間后再試。倘若5s后窗口仍然未準備好接收輸入事件&#xff0c;將導致ANR。直接引發ANR的原因有很多…

操作系統學習記錄

系統篇 內核 應用和底層硬件&#xff08;CPU、內存、硬盤等&#xff09;的連接橋梁。 用戶態和內核態 CPU和進程可以在兩種態下運行。 內核態可以直接訪問所有硬件資源&#xff0c;用戶態需要通過“系統調用”陷入到內核態才能否則只能訪問用戶空間地址的內存&#xff08;虛…

P8630 [藍橋杯 2015 國 B] 密文搜索

P8630 [藍橋杯 2015 國 B] 密文搜索 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)https://www.luogu.com.cn/problem/P8630 題目分析 基本上是hash的板子&#xff0c;但實際上對于密碼串&#xff0c;只要判斷主串中任意連續的八個位置是否存在密碼串即可&#xff1b;那么我們…

PHP學習筆記1——html標簽以及頭部元素頁面布局

html是一種超文本標識符號&#xff0c;用來在網頁中指定顯示頁面格式顯示 基本格式 <!doctype html> <html><head><title></title> </head><body> </body></html> 包含聲明&#xff0c;框架html&#xff0c;頭部head&a…

怎么把公眾號文章鏈接做成二維碼?掃碼查看公眾號推文的方法

公眾號是現在給用戶分享內容的一種方式&#xff0c;通過輸出優質的公眾號文章內容來為關注者提供信息和內容。當我們發布公眾號文章后&#xff0c;有些情況下會需要將公眾號內容生成二維碼之后&#xff0c;印刷到傳單、展板上來顯示&#xff0c;那么如何將公眾號的文章鏈接轉二…

Commonjs 和 Es Module詳解

一 前言 今天我們來深度分析一下 Commonjs 和 Es Module&#xff0c;希望通過本文的學習&#xff0c;能夠讓大家徹底明白 Commonjs 和 Es Module 原理&#xff0c;能夠一次性搞定面試中遇到的大部分有關 Commonjs 和 Es Module 的問題。 帶上疑問開始今天的分析&#xff1a; …

數字化轉型導師堅鵬:城市數字化轉型頂層規劃方法

城市數字化轉型頂層規劃方法 課程背景&#xff1a; 很多城市存在以下問題&#xff1a; 不知道如何系統地開展數字化轉型工作&#xff1f; 不清楚如何科學地制定數字化轉型戰略&#xff1f; 不知道如何高效地實施數字化轉型戰略&#xff1f; 課程特色&#xff1a; 有…

基于SpringBoot的在線拍賣系統設計與實現(源碼+調試+LW+PPT)

項目描述 臨近學期結束&#xff0c;還是畢業設計&#xff0c;你還在做java程序網絡編程&#xff0c;期末作業&#xff0c;老師的作業要求覺得大了嗎?不知道畢業設計該怎么辦?網頁功能的數量是否太多?沒有合適的類型或系統?等等。今天給大家介紹一篇基于SpringBoot的在線拍…

C++編程知識

&#xff08;1&#xff09;把數組中的所有元素賦值為一個值 memset(arr,0x3f,sizeof(arr))//最大值 memset(arr,0,sizeof(distance));//賦值為0&#xff08;2&#xff09;找最大最小值的下標 int zuixiao-1//設置dist-1只是因為方便選取第一個數作為比較對象而已 for(i0;i<…

VSCode將某個字符替換為換行符并換行顯示

不想每次去查了&#xff0c;我自己寫博客記錄一下~~~ 我的需求是一個一行的數據&#xff0c;用逗號分開&#xff0c;我希望豎著看有規律點&#xff0c;類似這樣 快捷鍵其實想 optioncommandf &#xff0c;但是我每次都記不住&#xff0c;大家可以直接在編輯欄找到replace的地方…

vite 快速搭建 Vue3.0項目

一、初始化項目 npm create vite-app <project name>二、進入項目目錄 cd ……三、安裝依賴 npm install四、啟動項目 npm run dev五、配置項目 安裝 typescript npm add typescript -D初始化 tsconfig.json //執行命令 初始化 tsconfig.json npx tsc --init …