【計算機視覺系列實戰教程 (實戰01)】:圖像銳化操作(并手寫銳化操作)

文章目錄

  • 前言
  • 1、什么是圖像銳化
  • 2、使用卷積對圖像進行銳化
    • (1).圖像預處理
    • (2).定義銳化卷積核
    • (3).對圖像進行卷積操作(實現圖像銳化)
  • 3、手動遍歷實現圖像銳化
  • 總結


前言

提示:本文主要通過手寫圖像銳化算法來理解圖像像素的遍歷:

我們知道圖像的高斯模糊的在實踐中是使用高斯卷積核來卷積處理圖像的,高斯卷積核“卷”圖像的結果是被卷的圖像區域變模糊了。而本文要講解的圖像銳化則是將圖像更加清晰。


提示:以下是本篇文章正文內容,下面案例可供參考

1、什么是圖像銳化

圖像銳化是一種圖像處理技術,旨在增強圖像中邊緣和細節的對比度,使其看起來更加清晰和鮮明。

2、使用卷積對圖像進行銳化

(1).圖像預處理

代碼如下(示例):這里對圖像先進行了高斯模糊處理,目的是去除噪音,防止銳化后加重噪音的影響

cv::Mat imRead = cv::imread("xxx.jpeg");
cv::GaussianBlur(imRead, imRead, cv::Size(3,3),0);

(2).定義銳化卷積核

代碼如下(示例):

cv::Mat kernel_sharpen = (cv::Mat_<int>(3,3)<< 0, -1, 0,-1, 5, -1,0, -1, 0);

(3).對圖像進行卷積操作(實現圖像銳化)

代碼如下(示例):

cv::filter2D(imRead, imRead, imRead.type(), kernel_sharpen);

總代碼如下:

cv::Mat imRead = cv::imread(strPth01);
cv::GaussianBlur(imRead, imRead, cv::Size(3,3),0);
//定義銳化卷積核
cv::Mat kernel_sharpen = (cv::Mat_<int>(3, 3) << 0, -1, 0,-1, 5, -1,0, -1, 0);
cv::Mat imSharpen;
cv::filter2D(imRead, imSharpen, imRead.type(), kernel_sharpen);

3、手動遍歷實現圖像銳化

手動遍歷像素實現圖像的銳化操作
下列函數使用了at訪問圖像像素,可根據自己的需求使用ptr、iterator等訪問像素,代碼如下(可直接使用):

/*@author @還下著雨ZG
* @param[in] imSrc, 源圖像,即待銳化的圖像
* @param[out] imDst, 目標圖像,即銳化后的圖像
* @return int, 正表示銳化成功,負表示失敗
*/
int ImgSharpenBySelf(const cv::Mat& imSrc, cv::Mat& imDst)
{if(imSrc.empty()) return -1;if(!imDst.empty()) imDst.release();if(imSrc.channels()==1){cv::Mat imCopy;imSrc.convertTo(imCopy,CV_32SC1);imDst = imCopy.clone();for(int r=1; r<imCopy.rows-1; ++r){for(int c=1; c<imCopy.cols-1; ++c){//這里使用int來訪問圖像像素元素imDst.at<int>(r,c) = 5*imCopy.at<int>(r,c)- imCopy.at<int>(r-1,c) - imCopy.at<int>(r+1,c)- imCopy.at<int>(r,c-1)- imCopy.at<int>(r,c+1);}}//將目標圖像(銳化后的圖像)轉為CV_8UC1imDst.convertTo(imDst, CV_8U);}else if(imSrc.channels()==3){//轉換圖像格式便于計算(防止溢出)cv::Mat imCopy;imSrc.convertTo(imCopy,CV_32SC3);imDst = imCopy.clone();//遍歷圖像并處理像素 new = 5*current - left - top - right - bottomfor(int r=1; r<imCopy.rows-1; ++r){for(int c=1; c<imCopy.cols-1; ++c){//這里使用int來訪問圖像像素元素imDst.at<cv::Vec3i>(r,c) = 5*imCopy.at<cv::Vec3i>(r,c)- imCopy.at<cv::Vec3i>(r-1,c) - imCopy.at<cv::Vec3i>(r+1,c)- imCopy.at<cv::Vec3i>(r,c-1)- imCopy.at<cv::Vec3i>(r,c+1);}}//將目標圖像(銳化后的圖像)轉為CV_8UC1imDst.convertTo(imDst, CV_8UC3);}else {return -2;}return 1;
}

總結

1.使用opencv自帶的卷積函數filter2D和卷積核kernel來銳化圖像
2.手動遍歷圖像(灰度圖像或彩色圖像)實現圖像的銳化操作

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

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

相關文章

Pinia 使用方法,配合localStorage實現存儲用戶信息

什么是 Pinia Pinia 是 Vue.js 應用程序的一個現代化的狀態管理庫&#xff0c;它用于集中管理和共享組件之間的數據&#xff0c;state、getter、和 action 是構建狀態管理的核心概念&#xff0c;它們分別對應數據存儲、計算屬性和操作方法。 使用方法 安裝 npm install pin…

PDF內存如何變小,PDF內存壓縮,PDF內存變小怎么調整

在數字化時代&#xff0c;pdf已成為工作、學習和生活中不可或缺的文件格式。它以其跨平臺兼容性和安全性受到廣大用戶的喜愛。然而&#xff0c;隨著pdf文件中嵌入的圖片、圖形和文本內容的增多&#xff0c;文件大小往往會變得相當可觀&#xff0c;給文件的傳輸和存儲帶來一定的…

做外貿就要會聊天,100條英文話術大合集!下一個銷冠就是你

更多外貿干貨及開發客戶的方法&#xff0c;盡在微信【千千外貿干貨】 100條英文聊天話術大合集 1.節日問候 Hi Mark, Merry Christmas. Wish you and your family happy and healthy. 2.假期問候 Tomorrow is our holiday, I will go to seaside, what’s your idea of your…

Spring Cloud 概述

目錄 ?編輯一、認識微服務 1、單體架構 2、集群和分布式架構 3、微服務架構 二、Spring Cloud 1、什么是 Spring Cloud 2、Spring Cloud 版本 3、Spring Cloud 的實現方案 Spring Cloud Netflix ?編輯Spring Cloud Alibaba 一、認識微服務 1、單體架構 很多創業公…

【開發筆記】如何用正則匹配出百度云盤分享鏈接的提取碼和鏈接?

用Wordpress做下載站&#xff0c;需要復制網盤鏈接到后臺的文章發布自定義字段&#xff0c;然后我不想每次手動拆分鏈接和提取碼分別到兩個input&#xff0c;就想在后臺粘帖時候實現拆分它。 $link 鏈接&#xff1a;https://pan.baidu.com/s/16y9Z5mTSE6gewStGDNndNQ 提取碼…

【STM32】在標準庫中使用DMA

1.MDA簡介 DMA全稱Direct Memory Access,直接存儲區訪問。 DMA傳輸將數據從一個地址空間復制到另一個地址空間。當CPU初始化這個傳輸動作&#xff0c;傳輸動作本身是由DMA控制器來實現和完成的。DMA傳輸方式無需CPU直接控制傳輸&#xff0c;也沒有中斷處理方式那樣保留現場和…

融云上線 HarmonyOS NEXT 版 SDK,全面適配「純血鴻蒙」生態

6 月 21 日&#xff0c;“2024 華為開發者大會”正式發布使用自研內核的原生鴻蒙系統 HarmonyOS NEXT&#xff0c;即 “純血鴻蒙”。 同時&#xff0c;華為宣布開放“鴻蒙生態伙伴 SDK 市場”&#xff0c;甄選各類優質、安全的 SDK 加入聚合平臺&#xff0c;助力各行業開發者輕…

Oracle如何切換temp表空間以及需要注意的點

Oracle如何切換temp表空間以及需要注意的點 昨天有套庫報/u01的磁盤90%使用率報警了&#xff0c;無法通過LVM在原盤基礎上擴容&#xff0c;計劃新增加磁盤并將能在線遷移的相關數據庫文件遷移走。 其中&#xff0c;對于temp表空間的處理&#xff0c;我采取的方法實際和undo差不…

【linux】網絡基礎(3)——tcp協議

文章目錄 TCP協議概括TCP頭部格式TCP連接管理建立連接&#xff08;三次握手&#xff09;數據傳輸確認應答機制捎帶應答 滑動窗口丟包問題 擁塞控制延時應達 終止連接&#xff08;四次揮手&#xff09; TCP協議概括 TCP是一個面向連接的協議&#xff0c;在傳輸數據之前需要建立連…

醫療器械進銷存軟件 專業合規的醫療公司器械出入庫管理軟件

財務管理&#xff1a;財務檔案統一管理&#xff0c;有利于科學管理企業資金 財務管理&#xff1a;發票關聯業務單據&#xff0c;業財融合&#xff0c;加速財務數字化轉型 財務管理&#xff1a;提供收付款功能&#xff0c;加快企業應收賬款的回收&#xff0c;降低付款的資金浮…

小白輕松使用maven

一、maven 下載 下載地址 maven 下載官方地址 https://maven.apache.org/download.cgi&#xff0c;黃色壓縮包。 2. 下載解壓 cmd 解壓命令 tar -zxvf apache-maven-3.9.8-bin.tar.gz二、maven 配置 settings.xml 文件配置 鏡像配置&#xff1a; 國內鏡像配置用于下載資源…

《操作系統真象還原》學習筆記:第1章 部署工作環境

**提示&#xff1a;**這篇文章是根據學長提供的教程《操作系統真象還原》第一章 部署工作環境來完成的&#xff0c;我按照學長給的教程一步一步做下來&#xff0c;再結合《操作系統真象還原》這本書&#xff0c;對實驗環境進行了配置。以下是我按照教程進行搭建的記錄&#xff…

[Vue3 + TS + Vite] CSS穿透

以 Element-Plus UI 中的 <el-drawer> 為例 方法一 Template中 <el-drawer>CSS中 <style lang"scss" scoped> :deep(.el-drawer__header) {margin: 0px 0px 0px 0px; /*上 右 下 左*/box-sizing: border-box;padding: 0px 0px 0px 0px; /*上 右…

【Ubuntu】詳細說說Parallels DeskTop安裝和使用Ubuntu系統

希望文章能給到你啟發和靈感~ 如果覺得文章對你有幫助的話,點贊 + 關注+ 收藏 支持一下博主吧~ 閱讀指南 開篇說明一、基礎環境說明1.1 硬件環境1.2 軟件環境二、Ubuntu系統的使用2.1 系統的下載2.2 系統的安裝2.3 安裝桌面版(可選)2.3.1 安裝/更新apt2.3.2 安裝桌面版2.3…

【JNDI注入利用工具】JNDIExploit v1.1

# 簡介 JNDIExploit一款用于 JNDI注入 利用的工具&#xff0c;大量參考/引用了 Rogue JNDI 項目的代碼&#xff0c;集成了JDNI注入格式&#xff0c;能夠更加方便的開啟服務端后直接利用&#xff0c;支持反彈Shell、命令執行、直接植入內存shell等&#xff0c;并集成了常見的by…

7.4、空指針和野指針

空指針 #include <iostream> using namespace std;int main() {//空指針//1、空指針用于給變量進行初始化int * p NULL;//2、空指針是不可以進行訪問的//0-255之間的內存編號是系統占用的&#xff0c;因此不可以訪問//cout<<*p<<endl;system("pause&q…

算法訓練 | 圖論Part3 | 101.孤島的總面積、102.沉沒孤島、103.水流問題、104.建造最大島嶼

目錄 101.孤島的總面積 圖論法 102.沉沒孤島 圖論法 103.水流問題 圖論法 104.建造最大島嶼 圖論法 101.孤島的總面積 題目鏈接&#xff1a;101. 孤島的總面積 文章講解&#xff1a;代碼隨想錄 圖論法 代碼一&#xff1a;深搜 #include <iostream> #includ…

在Centos7上安裝PostgreSQL16的詳細步驟

文章目錄 環境一、準備二、postgresql下載方法一&#xff1a;wget下載方法二&#xff1a;下載壓縮包解壓 三、創建用戶組、用戶四、創建數據主目錄五、配置環境變量六、initdb初使化數據庫七、配置服務八、設置開機自啟動九、設置防火墻十、啟動數據庫服務 環境 CPU: 4 核心或以…

Python爬蟲系列-讓爬蟲自己寫爬蟲(半自動化,代替人工寫爬蟲)

現在的PC、手機客戶端等終端設備大量使用了網頁前后端技術&#xff0c;另外主流的網站也會經常會更新&#xff0c;導致以前一個月更新一次爬蟲代碼&#xff0c;變成了天天需要更新代碼&#xff0c;所以自動化爬蟲技術在當前就顯得特別重要&#xff0c;最近我也是在多次更新某個…

養老院生活管理系統

摘要 隨著全球范圍內人口老齡化趨勢的日益加劇&#xff0c;養老院作為老年人生活的重要場所&#xff0c;其生活管理問題也顯得愈發突出和重要。為了滿足養老院在日常生活管理、老人健康監護、服務人員管理等多方面的需求&#xff0c;提高管理效率和服務質量。決定設計并實現了…