




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第第頁FPGA圖像處理-Sobel邊緣檢測原理因?yàn)樵谧?*3卷積的時(shí)候,圖像大小會(huì)變小,具體計(jì)算公式如下
其中O是輸出特征圖的大小,I是輸入特征圖的大小,P是Padding的大小,K是卷積核的大小,S是指Stride的大小,當(dāng)K的值是3,P的值是1,S的值也是1,的時(shí)候O的值和I的值相等。
為了保持輸出圖像的大小在經(jīng)過卷積后和輸入的大小一樣,我們需要進(jìn)行Padding操作,在這里我采用了復(fù)制周圍一圈的方式來完成。
采用(python)完成Sobel(算法)的參考模型
imp(or)tcv2ascvimportnumpyasnpimg=cv.imre(ad)(r"G:shiyan(IDc).jpg")img_gray=cv.cvtColor(img,cv.COLOR_RGB2GRAY)h,w=img_gray.shapeimg_padding=np.ze(ros)((h+2,w+2),np.uint8)img_padding[1:h+1,1:w+1]=img_grayimg_padding[0:1,1:w+1]=img_gray[0:1,:]img_padding[h+1:h+2,1:w+1]=img_gray[h-1:h,:]img_padding[:,0:1]=img_padding[:,1:2]img_padding[:,w+1:w+2]=img_padding[:,w:w+1]th=200sobel_(rf)=np.zeros((h,w),np.uint8)foriinrange(1,h):forjinrange(1,w):gx1=img_padding[i-1][j+1]+2*img_padding[i][j+1]+img_padding[i+1][j+1]gx2=img_padding[i-1][j-1]+2*img_padding[i][j-1]+img_padding[i+1][j-1]gy1=img_padding[i-1][j-1]+2*img_padding[i-1][j]+img_padding[i-1][j+1]gy2=img_padding[i+1][j-1]+2*img_padding[i+1][j]+img_padding[i+1][j+1]gx=abs(gx1-gx2)gy=abs(gy1-gy2)ifgx+gy>th:sobel_rf[i-1][j-1]=255else:sobel_rf[i-1][j-1]=0cv.imshow("sobel_rf",sobel_rf)cv.imshow("src",img_gray)cv.w(ai)tKey()cv.destroyAllWindows()
根據(jù)算法模型完成HDL:提供SpinalHDL源碼
importspinal.core._importspinal.lib._classSobel(th:Int,imageColNum:Int,imageRowNum:Int)ex(te)ndsComponent{valio=newBundle{valdataIn=slave(ImageStream(8,imageColNum,imageRowNum,1))valdataOut=master(ImageStream(8,imageColNum,imageRowNum,1))}noIoPrefix()valgenMatrix=newGenMatrix(scala.math.pow(2,log2Up(imageColNum)).toInt,imageColNum,imageRowNum)genMatrix.io.dataInio.dataInvalgenMatrixOut=ImageStream(8,imageColNum,imageRowNum,9)genMatrixOut:=genMatrix.io.dataOutvalGX1=RegNext(genMatrixOut.data(0).asUInt+^(genMatrixOut.data(1)##B"1'b0").asUInt+^genMatrixOut.data(2).asUInt)valGX2=RegNext(genMatrixOut.data(6).asUInt+^(genMatrixOut.data(7)##B"1'b0").asUInt+^genMatrixOut.data(8).asUInt)valGX=Reg(UInt(11bits))valGY1=RegNext(genMatrixOut.data(6).asUInt+^(genMatrixOut.data(3)##B"1'b0").asUInt+^genMatrixOut.data(0).asUInt)valGY2=RegNext(genMatrixOut.data(8).asUInt+^(genMatrixOut.data(5)##B"1'b0").asUInt+^genMatrixOut.data(2).asUInt)valGY=Reg(UInt(11bits))when(GX1>GX2){GX:=GX1-GX2}otherwise{GX:=GX2-GX1}when(GY1>GY2){GY:=GY1-GY2}otherwise{GY:=GY2-GY1}valG=RegNext(GX+GY)valsobelOut=Reg(Bits(8bits))when(G>th){sobelOut:=255}otherwise{sobelOut:=0}io.dataOut.data(0):=sobelOutio.dataOut.row:=Delay(genMatrixOut.row,4)io.dataOut.col:=Delay(genMatrixOut.col,4)io.dataOut.c.hsync:=Delay(genMatrixOut.c.hsync,4,init=False)io.dataOut.c.vsync:=Delay(genMatrixOut.c.vsync,4,init=False)io.dataOut.c.de:=Delay(genMatrixOut.c.de,4,init=False)}objectSobelextendsApp{SpinalConfig().generate(Verilog)(newSobel(200,640,480))}
(仿真)代碼:
importspinal.lib._importspinal.core._importspinal.core.(sim)._importscala.collec(ti)on.mutable.Queueimport(java).io.FileOutputStreamimportscala.io.SourceclasstbSobelC(th:Int)extendsSobel(th,430,430){varsrc=Array[String]()vardestDut=Array[String]()vardestRef=Array[String]()//varsrcLen=0varwidth=Array[Int]()varhigh=Array[Int]()valdutData=Queue[Int]()valrefData=Queue[Int]()varframeLen=0definit(srcFile:Array[String],destDu(tF)ile:Array[String],destRefFile:Array[String],imgShape:Array[(Int,Int)])={clockDomain.forkStimulus(10)io.dataIn.data(0)#=0io.dataIn.row#=0io.dataIn.col#=0src=srcFiledestDut=destDutFiledestRef=destRefFileio.dataIn.c.de#=falseio.dataIn.c.vsync#=falseio.dataIn.c.hsync#=falseframeLen=src.lengthwidth=imgShape.map(i=>i._1)high=imgShape.map(i=>i._2)clockDomain.waitSampling(10)}defframe(src:String,width:Int,high:Int)={valsrcFile=Source.fromFile(src)valsrcData=srcFile.getLines()varcolCnt=0varrowCnt=0io.dataIn.row#=widthio.dataIn.col#=highio.dataIn.c.de#=falseio.dataIn.c.vsync#=falseio.dataIn.c.hsync#=falseclockDomain.waitSampling(20)while(srcData.hasNext){valdata=srcData.next()io.dataIn.data(0)#=data.toIntio.dataIn.c.de#=trueif(colCnt==0&&rowCnt==0){io.dataIn.c.vsync#=trueprintln("xx")}else{io.dataIn.c.vsync#=false}if(colCnt==width-1&&rowCnt==high-1){clockDomain.waitSampling(1)io.dataIn.c.de#=falseclockDomain.waitSampling(200)}if(colCnt==0){io.dataIn.c.hsync#=true}else{io.dataIn.c.hsync#=false}if(colCnt==width-1&&rowCnt!=high-1){clockDomain.waitSampling(1)io.dataIn.c.de#=falseclockDomain.waitSampling(20)}if(colCnt==width-1){colCnt=0if(rowCnt==high-1){
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新西蘭中介合同范本
- 社交媒體在管理信息系統(tǒng)中的應(yīng)用研究
- 2025-2030年中國電力設(shè)備開關(guān)行業(yè)運(yùn)行格局及發(fā)展趨勢分析報(bào)告
- 2025-2030年中國熱力生產(chǎn)供應(yīng)行業(yè)前景評估與發(fā)展戰(zhàn)略規(guī)劃研究報(bào)告
- 2025-2030年中國煙葉復(fù)烤市場運(yùn)行態(tài)勢及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國汽車改裝市場運(yùn)行趨勢及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國水晶行業(yè)現(xiàn)狀調(diào)研及投資發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025-2030年中國氣凝膠干凝膠行業(yè)運(yùn)行狀況及發(fā)展前景預(yù)測報(bào)告
- 2025-2030年中國橡塑密封件制造行業(yè)供需現(xiàn)狀及投資發(fā)展規(guī)劃研究報(bào)告
- 2025-2030年中國核桃露行業(yè)市場運(yùn)行動(dòng)態(tài)與發(fā)展戰(zhàn)略分析報(bào)告
- 北京體育職業(yè)學(xué)院《機(jī)器人操作系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025安徽雙鶴藥業(yè)限責(zé)任公司招聘30人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2022年RDPAC認(rèn)證考試備考題庫700題(含答案)
- 2025年春新外研版(三起)英語三年級下冊課件 Unit2第2課時(shí)Speedup
- 人教版(新)九年級下冊化學(xué)全冊教案教學(xué)設(shè)計(jì)及教學(xué)反思
- 2025年浙江省國土空間規(guī)劃研究院招聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年安徽省安慶市公安警務(wù)輔助人員招聘190人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 7.1力教學(xué)課件-2024-2025學(xué)年初中物理人教版八年級下冊
- 小學(xué)生勤儉節(jié)約課件
- 化工行業(yè)生產(chǎn)過程安全管理升級策略方案
- 慢性胰腺炎病教學(xué)查房
評論
0/150
提交評論