網站首頁 編程語言 正文
1. 概念
顯著性檢測,就是使用圖像處理技術和計算機視覺算法來定位圖片中最“顯著”的區域。顯著區域就是指圖片中引人注目的區域或比較重要的區域,例如人眼在觀看一幅圖片時會首先關注的區域。例如下圖,我們人眼一眼看過去首先注意到的不是草坪,而是躺在草坪上的內馬爾,內馬爾所在的區域就是顯著性區域。這種自動定位圖像或場景重要區域的過程稱為顯著性檢測。顯著性檢測在目標檢測、機器人領域有很多應用。
在OpenCV的saliency模塊中有三種顯著性檢測算法:
- Static saliency:此類顯著性檢測算法依賴于圖像特征和統計信息來定位圖像中顯著性區域。
- Motion saliency: 此類顯著性檢測算法輸入為視頻或一系列連續幀。運動顯著性算法處理這些連續的幀,并跟蹤幀中“移動”的對象。這些移動的對象被認為是顯著性區域。
- Objectness:這類顯著性檢測算法計算出一個個的建議區域(proposals),這些建議區域被認為是目標可能存在的區域。
OpenCV提供類4種顯著性檢測算法的實現:
- cv2.saliency.ObjectnessBING_create()
- cv2.saliency.StaticSaliencySpectralResidual_create()
- cv2.saliency.StaticSaliencyFineGrained_create()
- cv2.saliency.MotionSaliencyBinWangApr2014_create()
2 靜態顯著性檢測
static_saliency.py使用兩種Static saliency算法:cv2.saliency.StaticSaliencySpectralResidual_create()和cv2.saliency.StaticSaliencyFineGrained_create()。使用computeSaliency()計算圖片的顯著性區域,返回結果是和輸入圖片一樣大小的矩陣,每個像素位置的取值[0,1],值越大表示該像素位置越顯著。最后我將返回顯著性矩陣可視化出來。
3 代碼
''' 2 圖像凸顯 ''' import cv2 import matplotlib.pyplot as plt # 1 read img = cv2.imread('luna.png',1) img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) # 2 StaticSaliencySpectralResidual_create() Residual = cv2.saliency.StaticSaliencySpectralResidual_create() _,img_Residual = Residual.computeSaliency(img) img_Residual = (img_Residual * 255).astype("uint8") # 3 saliency.StaticSaliencyFineGrained_create() Grained = cv2.saliency.StaticSaliencyFineGrained_create() _,img_Grained = Grained.computeSaliency(img) img_Grained = (img_Grained*255).astype('uint8') thre = cv2.threshold(img_Grained, 0, 255, ? ? ? ? ? ? ? ? ? ? ?cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] # 4 show plt.subplot(221) plt.imshow(img) plt.title('img') plt.subplot(222) plt.imshow(img_Residual) plt.title('img_Residual') # plt.subplot(223) plt.imshow(img_Grained) plt.title('img_Grained') plt.subplot(224) plt.imshow(thre) plt.title('thre') plt.show()
原文鏈接:https://blog.csdn.net/qq_35732321/article/details/123532399
相關推薦
- 2022-09-05 詳解apache編譯安裝httpd-2.4.54及三種風格的init程序特點和區別_Linux
- 2022-02-25 Servlet配置啟動級別loadOnStartup注意事項
- 2022-12-01 Go語言中基本數據類型的相互轉換詳解_Golang
- 2022-07-15 Qt項目打包的實現步驟_C 語言
- 2022-04-11 C++17之std::visit的具體使用_C 語言
- 2022-04-09 SpringBoot上傳文件并配置本地資源映射來訪問文件
- 2022-03-27 mongodb啟動方法小結_MongoDB
- 2022-06-29 tomcat正常啟動但網頁卻無法訪問的幾種解決方法_Tomcat
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支