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

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

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

FPGA圖像處理--高斯模糊(二)

FPGA開源工坊 ? 來(lái)源:FPGA開源工坊 ? 2023-10-29 16:26 ? 次閱讀

FPGA圖像處理--高斯模糊(一)中介紹了怎么使用Python生成高斯模糊需要使用的高斯核,在這個(gè)文章中就介紹一下怎么在FPGA中完成高斯模糊。

首先我們使用Python生成一個(gè)高斯模糊的參考模型,代碼如下:

import cv2 as cv
import numpy as np


img_path = "./sim/img/img.png"
img = cv.imread(img_path)
img_gray = cv.cvtColor(img, cv.COLOR_RGB2GRAY)
h, w = img_gray.shape
# kernel_1d = cv.getGaussianKernel(3, 0.8, ktype=cv.CV_32F)
# kernel_2d = kernel_1d * kernel_1d.T
# kernel_2d = kernel_2d * (1 / kernel_2d[0][0])
# print(kernel_2d)
gauss_kernel = [[1, 2, 1],
                [2, 4, 2],
                [1, 2, 1]]
img_padding = np.zeros((h + 2, w + 2), np.uint8)
img_padding[1:h + 1, 1:w + 1] = img_gray
img_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]
# gauss_img = cv.GaussianBlur(img_gray, (3, 3), 0.8)
gauss_img = np.zeros((h, w), np.uint8)
for i in range(1, h + 1):
    for j in range(1, w + 1):
        gauss_img[i - 1][j - 1] = (img_padding[i - 1][j - 1] * gauss_kernel[0][0] + img_padding[i - 1][j] *
                                   gauss_kernel[0][1] + img_padding[i - 1][j + 1] * gauss_kernel[0][2] + img_padding[i][
                                       j - 1] * gauss_kernel[1][0] + img_padding[i][j] * gauss_kernel[1][1] +
                                   img_padding[i][j + 1] * gauss_kernel[1][2] + img_padding[i + 1][j - 1] *
                                   gauss_kernel[2][0] + img_padding[i + 1][j] * gauss_kernel[2][1] + img_padding[i + 1][
                                       j + 1] * gauss_kernel[2][2]) / 16




def save_file(img, path):
    fp = open(path,'w')
    for i in range(img.shape[0]):
        for j in range(img.shape[1]):
            if i == img.shape[0] - 1 and j == img.shape[1] - 1:
                fp.write(str(img[i][j]))
            else:
                fp.write(str(img[i][j]) + "
")
    fp.close


def img2txt(img, dst):
    f = open(dst,"w")
    for i in range(img.shape[0]):
        for j in range(img.shape[1]):
            if i == img.shape[0] - 1 and j == img.shape[1] - 1:
                f.write(str(img[i][j][0]) + " " + str(img[i][j][1]) + " " + str(img[i][j][2]))
            else:
                f.write(str(img[i][j][0]) + " " + str(img[i][j][1]) + " " + str(img[i][j][2])  + "
")
            
    f.close()


file_path = "./sim/test.txt"
file_path_ref = "./sim/ref.txt"
img2txt(img, file_path)
save_file(gauss_img, file_path_ref)


cv.imshow("lena", img_gray)
cv.imshow("lena_gauss_img", gauss_img)
cv.waitKey()
cv.destroyAllWindows()

在上述代碼中完成了讀取一張圖片,然后進(jìn)行轉(zhuǎn)灰度和進(jìn)行高斯模糊的操作,并將原圖和高斯模糊后圖像數(shù)據(jù)存到了兩個(gè)txt中,用于我們仿真。

在FPGA中完成高斯模糊比較簡(jiǎn)單,使用以下代碼完成高斯矩陣的乘加。

c2ce1cc8-7632-11ee-939d-92fbcf53809c.png

仿真代碼:

首先使用一個(gè)模塊來(lái)讀取之前用python生成的原圖數(shù)據(jù),用于高斯模糊的激勵(lì)。

c2e330f4-7632-11ee-939d-92fbcf53809c.png

然后例化我們寫的高斯模糊模塊

c2f4b6f8-7632-11ee-939d-92fbcf53809c.png

最后將仿真結(jié)果保存起來(lái),并且在仿真的時(shí)候?qū)ut輸出的結(jié)果和參考模型進(jìn)行比對(duì),如果出現(xiàn)錯(cuò)誤就停止仿真。

c3051f02-7632-11ee-939d-92fbcf53809c.png

仿真結(jié)果如下:

c308de6c-7632-11ee-939d-92fbcf53809c.jpg

在仿真的時(shí)候會(huì)實(shí)時(shí)打印DUT和參考模型的結(jié)果是否比對(duì)成功。因?yàn)樵O(shè)置了DUT和參考模型的結(jié)果之間的閾值為5,所以當(dāng)兩者差值在5以內(nèi)時(shí)都會(huì)打印sim success。

仿真對(duì)比如下:

c3257c5c-7632-11ee-939d-92fbcf53809c.png

c338f8d6-7632-11ee-939d-92fbcf53809c.png


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

    關(guān)注

    1629

    文章

    21738

    瀏覽量

    603459
  • 圖像處理
    +關(guān)注

    關(guān)注

    27

    文章

    1292

    瀏覽量

    56754
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84694

原文標(biāo)題:FPGA圖像處理--高斯模糊(二)

文章出處:【微信號(hào):FPGA開源工坊,微信公眾號(hào):FPGA開源工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    模糊圖像處理解決方案

    造成圖像模糊的原因有很多,且不同原因?qū)е碌?b class='flag-5'>模糊圖像需要不同的方法來(lái)進(jìn)行處理。##圖像復(fù)原
    發(fā)表于 06-11 10:24 ?1.2w次閱讀

    FPGA設(shè)計(jì)經(jīng)驗(yàn)之圖像處理

    的; 如何基于FPGA進(jìn)行統(tǒng)計(jì)呢? 1)由于是統(tǒng)計(jì)圖像的直方圖,所以一定是統(tǒng)計(jì)結(jié)果會(huì)在圖像經(jīng)過(guò)之后才能產(chǎn)生,因此需要進(jìn)行緩存; 緩存一:統(tǒng)計(jì)后的結(jié)果; 緩存:經(jīng)過(guò)統(tǒng)計(jì)
    發(fā)表于 06-12 16:26

    FPGA圖像與視頻處理培訓(xùn)

     FPGA圖像與視頻處理培訓(xùn)課程目標(biāo):  1、深入了解JPEG標(biāo)準(zhǔn)和H.264標(biāo)準(zhǔn)協(xié)議;  2、掌握FPGA圖像
    發(fā)表于 07-16 14:05

    【NanoPi M2試用體驗(yàn)】圖像模糊

    `OpenCV有幾個(gè)函數(shù),是可以將圖像進(jìn)行模糊處理的,但其實(shí)是幾個(gè)濾波的函數(shù)。一、medianBlur函數(shù)這個(gè)函數(shù)就是一個(gè)中值濾波的函數(shù),但是運(yùn)行的結(jié)果就是把圖像
    發(fā)表于 06-19 23:18

    區(qū)間模糊高斯型隸屬度函數(shù)Matlab仿真的問(wèn)題

    本帖最后由 wanggy0225 于 2017-2-13 21:53 編輯 我想實(shí)現(xiàn)區(qū)間模糊高斯型隸屬度函數(shù)仿真及matlab程序,下面的程序是計(jì)算m的上下隸屬度值的,但其中的P是什么不知道,請(qǐng)大神幫忙解決一下。謝謝
    發(fā)表于 02-13 15:50

    基于FPGA圖像平滑處理

    基于FPGA圖像平滑處理AT7_Xilinx開發(fā)板(USB3.0+LVDS)資料共享騰訊鏈接:https://share.weiyun.com/5GQyKKc百度網(wǎng)盤鏈接:https
    發(fā)表于 07-05 13:51

    FPGA學(xué)習(xí)案例分享】基于FPGA圖像邊緣檢測(cè)例程

    、灰度轉(zhuǎn)換、值化、高斯濾波、 sobel算法等圖像處理算法,以及FPGA的實(shí)現(xiàn)2、 SDRAM高速接口以及
    發(fā)表于 11-29 09:52

    薦讀:FPGA設(shè)計(jì)經(jīng)驗(yàn)之圖像處理

    從中流過(guò),完成一個(gè)階段的運(yùn)算之后就直接流入第個(gè)階段,不需要把一個(gè)計(jì)算階段完成后的數(shù)據(jù)再送回內(nèi)存中,再讀出來(lái)交給下一個(gè)階段的運(yùn)算。這樣就會(huì)節(jié)省很多時(shí)間和功耗?,F(xiàn)在用FPGA圖像處理
    發(fā)表于 06-08 15:55

    為什么高斯濾波廣泛的應(yīng)用在圖像處理中?

    為什么高斯濾波廣泛的應(yīng)用在圖像處理
    發(fā)表于 10-09 06:31

    FPGA圖像處理

    FPGA圖像處理
    發(fā)表于 12-14 22:29 ?19次下載

    基于梯度方向直方圖與高斯金字塔的車牌模糊漢字識(shí)別方法

    ,第一層描述了模糊漢字的細(xì)節(jié)特征,通過(guò)對(duì)第一層作平滑處理并向下采樣得到第層,在描述模糊圖像細(xì)節(jié)特征的基礎(chǔ)上突出主體特征;然后對(duì)兩層
    發(fā)表于 12-25 10:43 ?0次下載
    基于梯度方向直方圖與<b class='flag-5'>高斯</b>金字塔的車牌<b class='flag-5'>模糊</b>漢字識(shí)別方法

    基于FPGA灰度圖像高斯濾波算法的實(shí)現(xiàn)

    FPGA仿真篇-使用腳本命令來(lái)加速仿真 基于FPGA的HDMI高清顯示借口驅(qū)動(dòng) 基于FPGA灰度圖像
    發(fā)表于 02-20 20:49 ?7623次閱讀
    基于<b class='flag-5'>FPGA</b>灰度<b class='flag-5'>圖像</b><b class='flag-5'>高斯</b>濾波算法的實(shí)現(xiàn)

    基于FPGA圖像處理高斯模糊實(shí)現(xiàn)

    高斯模糊(Gaussian Blur)是一種高斯低通濾波,可以過(guò)濾掉圖像的高頻部分,保留低頻部分,對(duì)于去除高斯噪聲非常有效果,常常被用于
    發(fā)表于 10-26 09:36 ?823次閱讀
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>圖像</b><b class='flag-5'>處理</b>的<b class='flag-5'>高斯</b><b class='flag-5'>模糊</b>實(shí)現(xiàn)

    高斯卷積核函數(shù)在圖像采樣中的意義

    。這種平滑處理通過(guò)減小圖像中像素之間的差異來(lái)模糊圖像,有助于去除圖像中的高頻噪聲和細(xì)節(jié)紋理,使圖像
    的頭像 發(fā)表于 09-29 09:33 ?415次閱讀

    圖像高斯濾波的原理及FPGA實(shí)現(xiàn)思路

    1.概念 高斯分布 圖像濾波之高斯濾波介紹 圖像處理算法|高斯濾波
    的頭像 發(fā)表于 12-07 09:12 ?276次閱讀
    <b class='flag-5'>圖像</b><b class='flag-5'>高斯</b>濾波的原理及<b class='flag-5'>FPGA</b>實(shí)現(xiàn)思路