日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenCV種支持標(biāo)準(zhǔn)卷積邊緣填充做法

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 作者:OpenCV學(xué)堂 ? 2022-07-12 14:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

OpenCV在使用卷積進(jìn)行圖像處理過程種,如何處理邊緣像素錨定輸出兩個(gè)技術(shù)細(xì)節(jié)一直是很多人求而不得的疑惑。其實(shí)OpenCV在做卷積濾波時(shí)會對圖像進(jìn)行邊界填充,實(shí)現(xiàn)對邊緣像素的卷積計(jì)算的支持,不同填充方式不同錨定點(diǎn)會得到圖像卷積輸出不同的結(jié)果。

邊界填充

我們首先來看一下OpenCV種支持標(biāo)準(zhǔn)卷積邊緣填充做法,OpenCV支持的有如下幾種卷積邊緣填充算法:

常量邊界

BORDER_CONSTANT

iiiiii|abcdefgh|iiiiiii

邊界復(fù)制

BORDER_REPLICATE

aaaaaa|abcdefgh|hhhhhhh

邊界反射

BORDER_REFLECT

fedcba|abcdefgh|hgfedcb

邊界換行

BORDER_WRAP

cdefgh|abcdefgh|abcdefg

邊界反射101

BORDER_REFLECT_101

gfedcb|abcdefgh|gfedcba

邊界透明-很不幸運(yùn)的是OpenCV4已經(jīng)不支持啦!

BORDER_TRANSPARENT

uvwxyz|abcdefgh|ijklmno

默認(rèn)填充方式

OpenCV中 filter2D, blur, GaussianBlur等卷積操作默認(rèn)支持為BORDER_DEFAULT(BORDER_REFLECT_101)

各種不同方式對邊緣的填充效果如下:

ad3a60fa-01a9-11ed-ba43-dac502259ad0.jpg

上圖背景為紅色,填充上下左右四個(gè)像素大小邊緣!右下角為原圖,左上角圖像為常量邊緣填充效果(i=0黑色)。

相關(guān)代碼實(shí)現(xiàn)如下:

image=cv.imread("D:/images/qxx.png");
ih,iw=image.shape[:2]
border=4

#邊界填充
b1=cv.copyMakeBorder(image,border,border,border,border,cv.BORDER_CONSTANT)
b2=cv.copyMakeBorder(image,border,border,border,border,cv.BORDER_REPLICATE)
b3=cv.copyMakeBorder(image,border,border,border,border,cv.BORDER_REFLECT)
b4=cv.copyMakeBorder(image,border,border,border,border,cv.BORDER_WRAP)
b5=cv.copyMakeBorder(image,border,border,border,border,cv.BORDER_REFLECT_101)

#邊界填充類型說明
cv.putText(image,"input",(20,20),cv.FONT_HERSHEY_PLAIN,1.0,(255,0,0))
cv.putText(b1,"BORDER_CONSTANT",(20,20),cv.FONT_HERSHEY_PLAIN,1.0,(255,0,0))
cv.putText(b2,"BORDER_REPLICATE",(20,20),cv.FONT_HERSHEY_PLAIN,1.0,(255,0,0))
cv.putText(b3,"BORDER_REFLECT",(20,20),cv.FONT_HERSHEY_PLAIN,1.0,(255,0,0))
cv.putText(b4,"BORDER_WRAP",(20,20),cv.FONT_HERSHEY_PLAIN,1.0,(255,0,0))
cv.putText(b5,"BORDER_REFLECT_101",(20,20),cv.FONT_HERSHEY_PLAIN,1.0,(255,0,0))

#拼接結(jié)果輸出
h=b1.shape[0]*2+8
w=b1.shape[1]*3+16
bh,bw=b1.shape[:2]
result=np.zeros([h,w,3],dtype=np.uint8)
result[:,:,:]=(0,0,255)
result[0:bh,0:bw,:]=b1;
result[0:bh,bw+8:bw+bw+8,:]=b2;
result[0:bh,bw+bw+16:bw+bw+bw+16,:]=b3;
result[bh+8:bh+bh+8,0:bw,:]=b4;
result[bh+8:bh+bh+8,bw+8:bw+bw+8,:]=b5;
result[bh+12:bh+12+ih,bw+bw+20:bw+bw+20+iw,:]=image;

#顯示
cv.imshow("result",result)
cv.imwrite("D:/border_result.png",result)
cv.waitKey(0)
cv.destroyAllWindows()

錨定位置

在進(jìn)行卷積處理的時(shí)候,卷積mask與對應(yīng)的像素塊點(diǎn)乘得到輸出,把輸出結(jié)果賦值給哪個(gè)像素點(diǎn)是由錨定參數(shù)anchor決定,以自定義濾波函數(shù)filter2D為例說明

voidcv::filter2D(
InputArraysrc,
OutputArraydst,
intddepth,
InputArraykernel,
Pointanchor=Point(-1,-1),
doubledelta=0,
intborderType=BORDER_DEFAULT
)
其中
kernel - 表示輸入的自定義卷積核大小
anchor - 表示錨定點(diǎn)位置,默認(rèn)情況Point(-1,-1)表示是卷積核的中心位置
borderType - 表示邊緣填充的像素大小,ksize/2其中ksize表示卷積核大小

上述函數(shù)在卷積核為奇數(shù)的時(shí)候,卷積核的中心位置很容易確定,比如3x3的卷積核大小,中心位置為Point(1,1),5x5的卷積核大小中心位置為Point(2,2)

但是當(dāng)卷積核大小為偶數(shù)的時(shí)候,很多人都搞不清楚中心位置是如何確定的,其實(shí)這個(gè)時(shí)候中心也為(ksize/2), 對2x2的卷積核,中心位置為Point(1,1),4x4的卷積核中心位置為Point(2,2)

錨定位置對卷積結(jié)果的影響

以2x2與4x4的卷積核為與3x3與5x5的像素?cái)?shù)據(jù)為例

情況一

2x2卷積核對3x3的像素塊

ad5a1eb8-01a9-11ed-ba43-dac502259ad0.png

ad6c6776-01a9-11ed-ba43-dac502259ad0.png

當(dāng)錨定點(diǎn)為默認(rèn)(1,1)/(-1,-1)時(shí)候:

ad7e1552-01a9-11ed-ba43-dac502259ad0.png

當(dāng)錨定點(diǎn)設(shè)置為(0,0)時(shí):

ad91dfe2-01a9-11ed-ba43-dac502259ad0.png

可以看到二者的輸出結(jié)果全然不同,原因在于當(dāng)錨定點(diǎn)不同的時(shí)候,卷積mask的開始位置也會不不同,圖示如下:

ada20f98-01a9-11ed-ba43-dac502259ad0.jpg

情況二:

4x4卷積核對5x5的像素塊:

adb38278-01a9-11ed-ba43-dac502259ad0.png

使用BORDER_DEFAULT填充方式,填充之后為:

adc6234c-01a9-11ed-ba43-dac502259ad0.png

不同錨定位置的均值卷積輸出結(jié)果:

ade1a13a-01a9-11ed-ba43-dac502259ad0.jpg

三個(gè)不同錨定點(diǎn)對應(yīng)卷積mask的起始位置與錨定像素輸出:

adfc7d98-01a9-11ed-ba43-dac502259ad0.jpg

代碼演示如下:

src=np.zeros([3,3],dtype=np.uint8)
src[0,0]=16
src[1,1]=8
src[2,2]=4
print("
inputimage:
",src)

k1=[[1,0],[0,-1]]
print("
kernel:
",k1)
result=cv.copyMakeBorder(src,1,1,1,1,cv.BORDER_DEFAULT)
print("
BORDER_DEFAULT邊界填充:
",result)
dst=cv.filter2D(src,cv.CV_32F,np.asarray(k1),None,anchor=(0,0),borderType=cv.BORDER_DEFAULT)
print("
filter2D:
",dst)
print("
")

src=np.zeros([5,5],dtype=np.uint8)
src[0,0]=32
src[1,1]=16
src[2,2]=8
src[3,3]=4
src[4,4]=2
print("
input:
",src)
k2=np.ones([4,4],dtype=np.int32)
print("
kernel:
",k2)
result=cv.copyMakeBorder(src,3,3,3,3,cv.BORDER_DEFAULT)
print("
邊界填充:
",result)
dst=cv.filter2D(src,cv.CV_32F,np.asarray(k2),None,anchor=(-1,-1),borderType=cv.BORDER_DEFAULT)
print("
filter2DResult:
",dst)

原文標(biāo)題:詳解OpenCV卷積濾波之邊緣處理與錨定輸出

文章出處:【微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:彭靜

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4422

    瀏覽量

    67873
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74420
  • OpenCV
    +關(guān)注

    關(guān)注

    33

    文章

    652

    瀏覽量

    45108

原文標(biāo)題:詳解OpenCV卷積濾波之邊緣處理與錨定輸出

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    FPGA實(shí)現(xiàn)CNN卷積層的高效窗口生成模塊設(shè)計(jì)與驗(yàn)證

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)可以分為卷積層、池化層、激活層、全鏈接層結(jié)構(gòu),本篇要實(shí)現(xiàn)的,就是CNN的卷積層中的window窗。
    的頭像 發(fā)表于 04-15 10:35 ?195次閱讀
    FPGA實(shí)現(xiàn)CNN<b class='flag-5'>卷積</b>層的高效窗口生成模塊設(shè)計(jì)與驗(yàn)證

    在芯片封裝保護(hù)中,圍壩填充膠工藝具體是如何應(yīng)用的

    圍壩填充膠(Dam&Fill,也稱Dam-and-Fill或圍堰填充)工藝是芯片封裝中一常見的底部填充(Underfill)或局部保護(hù)技術(shù),主要用于對芯片、焊點(diǎn)或敏感區(qū)域提供機(jī)械支撐
    的頭像 發(fā)表于 12-19 15:55 ?2074次閱讀
    在芯片封裝保護(hù)中,圍壩<b class='flag-5'>填充</b>膠工藝具體是如何應(yīng)用的

    沒有專利的opencv-python 版本

    opencv-python==3.4.15.55 -i https://pypi.tuna.tsinghua.edu.cn/simple 注意:3.4.x 核心版同樣無專利風(fēng)險(xiǎn),但僅支持 Python
    發(fā)表于 12-13 12:37

    卷積運(yùn)算分析

    卷積運(yùn)算的基礎(chǔ)運(yùn)算是乘加運(yùn)算(MAC,Multiplication and Accumulation),本文設(shè)計(jì)了基本運(yùn)算單元PE模塊來實(shí)現(xiàn)MAC運(yùn)算。對于卷積運(yùn)算而言,一次性至少處理一個(gè)感受域規(guī)模
    發(fā)表于 10-28 07:31

    NMSIS庫的使用

    nmsis core、nmsis dsp和nmsis nn三個(gè)組件,分別提供了對處理器核心和外設(shè)、數(shù)字信號處理庫和神經(jīng)網(wǎng)絡(luò)內(nèi)核的支持。 卷積、激活、池化是卷積神經(jīng)網(wǎng)絡(luò)中常用的三操作,
    發(fā)表于 10-24 09:58

    機(jī)器視覺雙雄YOLO 和 OpenCV 到底有啥區(qū)別?別再傻傻分不清!

    很多人一聽到 “YOLO”和“OpenCV” ,總以為它們是同一東西。其實(shí), 一個(gè)是AI算法,一個(gè)是視覺工具庫;一個(gè)會“識別”,一個(gè)會“處理” 。本文帶你深入了解兩者的核心區(qū)別與協(xié)同關(guān)系,以及它們
    的頭像 發(fā)表于 10-14 16:00 ?1757次閱讀
    機(jī)器視覺雙雄YOLO 和 <b class='flag-5'>OpenCV</b> 到底有啥區(qū)別?別再傻傻分不清!

    【開發(fā)實(shí)例】基于GM-3568JHF開發(fā)板安裝OpenCV并使用視頻目標(biāo)跟蹤 ( CamShift)

    在計(jì)算機(jī)視覺領(lǐng)域,視頻目標(biāo)跟蹤是一個(gè)非常重要的任務(wù)。視頻目標(biāo)跟蹤廣泛應(yīng)用于監(jiān)控、自動(dòng)駕駛、人機(jī)交互等多個(gè)領(lǐng)域。OpenCV提供了多種目標(biāo)跟蹤算法,其中MeanShift和CamShift是兩經(jīng)典且
    的頭像 發(fā)表于 09-02 08:04 ?963次閱讀
    【開發(fā)實(shí)例】基于GM-3568JHF開發(fā)板安裝<b class='flag-5'>OpenCV</b>并使用視頻目標(biāo)跟蹤 ( CamShift)

    零成本鋼鐵俠手套!樹莓派+OpenCV 秒變手勢遙控器!

    大家好,這是一個(gè)樹莓派和OpenCV的連載專題。使用樹莓派與OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤使用樹莓派與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺系統(tǒng)使用樹莓派和OpenCV實(shí)現(xiàn)手部
    的頭像 發(fā)表于 08-16 16:16 ?1606次閱讀
    零成本鋼鐵俠手套!樹莓派+<b class='flag-5'>OpenCV</b> 秒變手勢遙控器!

    如何使用樹莓派與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺系統(tǒng)?

    大家好,這是一個(gè)樹莓派和OpenCV的連載專題。使用樹莓派與OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤使用樹莓派與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺系統(tǒng)使用樹莓派和OpenCV實(shí)現(xiàn)手部
    的頭像 發(fā)表于 08-14 17:45 ?2514次閱讀
    如何使用樹莓派與<b class='flag-5'>OpenCV</b>實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺系統(tǒng)?

    如何使用樹莓派+OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤?

    大家好,這是一個(gè)樹莓派和OpenCV的連載專題。使用樹莓派與OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤使用樹莓派與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺系統(tǒng)使用樹莓派和OpenCV實(shí)現(xiàn)手部
    的頭像 發(fā)表于 08-13 17:44 ?1493次閱讀
    如何使用樹莓派+<b class='flag-5'>OpenCV</b>實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤?

    AI 邊緣計(jì)算網(wǎng)關(guān):開啟智能新時(shí)代的鑰匙?—龍興物聯(lián)

    智能化決策的關(guān)鍵。卷積神經(jīng)網(wǎng)絡(luò)在圖像識別方面表現(xiàn)卓越,在智能工廠產(chǎn)品質(zhì)量檢測中,能快速準(zhǔn)確識別產(chǎn)品缺陷;循環(huán)神經(jīng)網(wǎng)絡(luò)擅長處理時(shí)間序列數(shù)據(jù),可對設(shè)備故障進(jìn)行精準(zhǔn)預(yù)測。 在通信技術(shù)與協(xié)議支持上,AI 邊緣
    發(fā)表于 08-09 16:40

    如何板端編譯OpenCV并搭建應(yīng)用--基于瑞芯微米爾RK3576開發(fā)板

    本文將介紹基于米爾電子MYD-LR3576開發(fā)板(米爾基于瑞芯微 RK3576開發(fā)板)的板端編譯OpenCV及環(huán)境搭建方案的開發(fā)測試。摘自優(yōu)秀創(chuàng)作者-短笛君 RK3576具有如下配置: 4
    發(fā)表于 08-08 17:14

    漢思新材料:底部填充膠二次回爐的注意事項(xiàng)

    底部填充膠(Underfill)是一在電子組裝中用于增強(qiáng)焊點(diǎn)可靠性的工藝,特別是在倒裝芯片封裝中。針對底部填充膠(Underfill)進(jìn)行二次回爐(通常發(fā)生在返修、更換元件或后道工序需要焊接
    的頭像 發(fā)表于 07-11 10:58 ?1491次閱讀
    漢思新材料:底部<b class='flag-5'>填充</b>膠二次回爐的注意事項(xiàng)

    邊緣計(jì)算網(wǎng)關(guān)支持斷點(diǎn)續(xù)傳嗎

    邊緣計(jì)算網(wǎng)關(guān)通常支持斷點(diǎn)續(xù)傳功能 。斷點(diǎn)續(xù)傳功能是邊緣計(jì)算網(wǎng)關(guān)的重要特性之一,它能夠在網(wǎng)絡(luò)中斷或設(shè)備故障時(shí),將采集到的數(shù)據(jù)暫存在本地存儲空間中,待網(wǎng)絡(luò)恢復(fù)后再將數(shù)據(jù)上傳至云平臺,從而保證數(shù)據(jù)的完整性
    的頭像 發(fā)表于 05-27 15:25 ?983次閱讀

    溝槽填充技術(shù)介紹

    圖2.2是現(xiàn)代CMOS 器件剖面的示意圖。一般來說,水平方向的尺寸微縮幅度比垂直方向的幅度更大,這將導(dǎo)致溝槽(包含接觸孔)的深寬比(aspect ratio)也隨之提高,為避免溝槽填充過程中產(chǎn)生空穴
    的頭像 發(fā)表于 05-21 17:50 ?1922次閱讀
    溝槽<b class='flag-5'>填充</b>技術(shù)介紹
    格尔木市| 雷州市| 西安市| 清涧县| 盖州市| 绩溪县| 南康市| 墨玉县| 恩施市| 冀州市| 沙坪坝区| 壤塘县| 咸阳市| 麟游县| 二连浩特市| 大方县| 南澳县| 通河县| 龙里县| 平果县| 广水市| 新巴尔虎左旗| 高青县| 凌云县| 格尔木市| 沐川县| 宁德市| 夏津县| 宁波市| 扶余县| 澎湖县| 东城区| 伊吾县| 沾益县| 庆城县| 教育| 滁州市| 星子县| 平果县| 古蔺县| 沙洋县|