亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

圖像拐點檢測-原理以及代碼實現

標簽:
人工智能


今天带来的内容只用两个字形容-干货!!首先我们科普下图像识别的常识,图片在电脑看来,其实就是一个矩阵,每个矩阵中的一个值都对应图片的一个像素点。(下图摘自《机器学习实践应用》)

https://img1.sycdn.imooc.com//5ad88b8b0001cc9a06020210.jpg

图片中其实是有很多的边以及拐角的,今天要介绍的就是如何通过算法找到图片拐角。  



原理

其实找到拐角,很简单,就是在图片矩阵中,通过一个移动的窗口去遍历矩阵中的数值,一旦返现有像素变化明显的地方,那就可能是一个拐点。这个过程就有点像“拿澡巾闭着眼睛从上向下搓澡,当你搓到一个硬硬的东西的时候,你会感觉这个部位跟其它的地方不同,没错,这里就是你的膝盖。” 


还是正经一点,看一下数学公式,(x,y)可以理解成是一张图片的横纵坐标,就是人的身体。(u,v)就是窗口函数,就是移动的澡巾。找图片的拐点就跟搓澡去找身体坚硬的地方一样,需要不断游动(u,v)的值,当这个值剧烈变化了,就说明出现了拐点。




最终通过数学方法,可以简化上边的函数式,过程很复杂,大家会意下就好,最终的结果:


R是这样判断的,R=MIN(x',y'),x'表示图片横向的变化趋势,y‘表示图片纵向的变化趋势,这个可以用一张图解释下,

(1)下图左数第一张是y’向变化很小,而x‘向变化大,可以设定为x'>0,y'<0,于是R<0。

(2)中间的一张两个方向都不变,R=0

(3)最右边一张两个方向变化都很大,x'>0,y'>0,R>0

https://img1.sycdn.imooc.com//5ad88bd50001db3303920119.jpg

于是,最右边的图是拐角,最左边的是边,中间的什么都不是。


代码

下面就用一段OPENCV的代码实现一下拐点检测,可以通过红点把拐角的地方标出来,给大家一个直观印象。

  1. import numpy as np    

  2.   

  3. import cv2    

  4.   

  5. from matplotlib import pyplot as plt    

  6.   

  7. img = cv2.imread('sample.jpg')    

  8.   

  9. gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)    

  10.   

  11. corners = cv2.goodFeaturesToTrack(gray,25,0.01,10)    

  12.   

  13. corners = np.int0(corners)    

  14.   

  15. for i in corners:    

  16.   

  17.     x,y = i.ravel()    

  18.   

  19.     cv2.circle(img,(x,y),3,255,-1)    

  20.   

  21. plt.imshow(img),plt.show()  

再跑一个case给大家看看,身边没有拐角特别明显的东西,随手弄了张感觉比较明显的拐角图,恩!

原图:



运行结果:



今天代码写的我快缺氧了,欢迎猛烈转载,良心制作,谢谢!

参考:

https://blog.csdn.net/woxincd/article/details/60754658

https://blog.csdn.net/qq_41352018/article/details/79944481

原文出处

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消