【C++】【圖像處理】均值濾波和高斯濾波(低通濾波)演算法解析(以.raw格式的圖像為基礎進行圖像處理、gray levels:256)

来源:https://www.cnblogs.com/vangoghpeng/archive/2023/11/13/17829904.html
-Advertisement-
Play Games

1 void meanFilter(BYTE* image, int width, int height, BYTE* outImg) 2 { 3 //均值濾波 4 int smth[9]; 5 int i, j, m, n; 6 BYTE block[9]; 7 8 // 高斯捲積核初始化 9 s ...


 1 void meanFilter(BYTE* image, int width, int height, BYTE* outImg)
 2 {
 3     //均值濾波
 4     int smth[9];
 5     int i, j, m, n;
 6     BYTE block[9];
 7     
 8     // 高斯捲積核初始化
 9     smth[0] = 1, smth[1] = 2, smth[2] = 1,
10     smth[3] = 2, smth[4] = 4, smth[5] = 2,
11     smth[6] = 1, smth[7] = 2, smth[8] = 1;
12 
13     int value;
14     for (i = 0;i < 9;i++) //初始化均值捲積核
15         smth[i] = 1;
16 
17     for (i = 0;i < height;i++) 
18         for (j = 0;j < width;j++) {
19             //將輸出圖像邊緣的像素值設為 0
20             if (i == 0 || j == 0 || i == height - 1 || j == width - 1) 
21                 outImg[i * width + j] = 0;
22 
23             //提取以當前像素為中心的 3x3 區域的像素值,然後利用捲積操作計算這個區域的均值,最後將計算得到的均值作為輸出圖像中對應位置的像素值
24             else {
25                 for (m = -1;m < 2;m++) 
26                     for (n = -1;n < 2;n++) 
27                         block[(m + 1) * 3 + n + 1] = image[(i + m) * width + j + n];
28                 value = convolution(smth, block);
29                 outImg[i * width + j] = BYTE(value / 9.0f); // 高斯為 value / 16.0f
30             }
31         }
32 
33 }
34 
35 
36 int convolution(int* operatr, BYTE* block)
37 {
38     int value;
39     int i, j;
40     value = 0;
41     //捲積運算
42     //遍歷 3x3 區域內的每個像素,並根據捲積核的權重計算出捲積結果
43     for (i = 0;i < 3;i++) 
44         for (j = 0;j < 3;j++) 
45             value += operatr[i * 3 + j] * block[i * 3 + j];
46     /*
47     1 1 1
48     1 1 1
49     1 1 1
50 
51     0 0 0
52     0 x y
53     0 j k
54     */
55 
56     return value;
57 
58 }  

 

低通濾波和直方圖均衡核心點:按照一定的 權重 / 均分比例 處理 一定區域 / 數量上的像素點上的灰度級值。

總結:均值和高斯濾波(低通)的核心,創建捲積核並確定各個點上的權重,然後將邊緣灰度級歸零,提取非邊緣像素點的3x3區域的像素級,最後計算捲積結果再輸出。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、定義 給某一個對象提供一個代理或占位符,並由代理對象控制對原對象的訪問。代理模式是一種結構型模式。 二、描述 代理模式的結構比較簡單,其核心是代理類,為了讓客戶端能夠一致性地對待真實對象和代理對象,在代理模式中引入了抽象層。包含以下三個角色: 1、Subject(抽象主題角色):它聲明真實主題和 ...
  • 清晰架構原則對於任何希望創建健壯、可維護和可擴展軟體的軟體開發者來說都至關重要。理解並實施這些概念可以顯著提升你的編程技能。以下是對20個基本架構洞見的深入探討:依賴規則: 清晰架構的核心是依賴規則。它規定源代碼的依賴關係應始終指向內部。這種內向的方向確保了一個具有彈性的基礎,強調了關註點的分離,並 ...
  • 話不多說,今天我們要介紹的是函數。本系列文章追求短而精,今天我們將重點討論函數以及與Java方法的區別。與Java方法不同,函數不需要像Java方法一樣講究修飾符等其他特性,它只需要使用"def"關鍵字進行聲明。另外,函數的參數也與Java方法有所不同,Java方法中不存在預設參數的概念,而在Pyt... ...
  • 七、判斷(二) 引:學校舉辦了一個抽獎獲得,根據學號給予學生獎勵,學生獎勵如下: 學號 獎勵 15692 現金500 65432 現金450 98741 現金250 2531 現金150 666 學號*2 321 學號*2 //if語句實現 #include <iostream> int main( ...
  • 在現代互聯網時代中,功能變數名稱是我們上網必備的工具,它承載著我們上網所需的所有信息。但是有時我們需要瞭解功能變數名稱的相關信息,比如IP地址、註冊人信息、功能變數名稱到期時間等等。這時候,我們就需要用到功能變數名稱反查API介面,來獲取這些信息。 一鍵獲取功能變數名稱的相關信息——功能變數名稱反查API介面的神奇功能,可以幫助我們快速獲取我們所 ...
  • 結構體 // 如何定義結構體 struct User { active: bool, username: String, email: String, sign_in_count: u64, } // 如何使用結構體 let user = User { active: true, username: ...
  • 本文設計了可視化賬本界面,將其分為總額統計、收支結構兩個標簽頁。總額統計中主要展示選定時間段內的收支總額、各存款賬戶的收支情況,還通過柱狀圖的形式展示變化趨勢;收支結構中通過餅圖的形式展示選定時間段內各收入/支出類型所占比例。本界面通過多個Dataframe類的私有屬性存放各動賬記錄,方便應對各種場... ...
  • 用python計算圓周率PI ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬描述 用python計算圓周率PI‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...