国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于FPGA的圖像灰度處理

這篇具有很好參考價值的文章主要介紹了基于FPGA的圖像灰度處理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

????????對于圖像的灰度處理,原理與基于FPGA的圖像反轉(zhuǎn)相同,但算法不同。相交于基于FPGA的圖像反轉(zhuǎn),基于FPGA的圖像灰度處理操作時間由于FPGA的并行性,其處理時間與前者相同。雖然工作量大了4倍左右,但處理時間基本相同,在仿真中,仍在5.2ms完成了處理。凸顯出FPGA圖像處理的優(yōu)勢特點(diǎn)。下文將對FPGA圖像灰度處理各部分進(jìn)行講解。

  • 處理效果

先上處理效果,以下為對我妹妹的臉部進(jìn)行灰度處理效果。

基于FPGA的圖像灰度處理,fpga開發(fā)

512*512 處理前 ???????????

基于FPGA的圖像灰度處理,fpga開發(fā)

????????????????????????????????????????????????????????????????512*512 處理后

  • 處理過程

????????通過python使用PILLOW,獲得輸入bmp圖片的RGB值,并將R/G/B三個分量分別以16進(jìn)制寫入三個txt文件中。再通過vivado仿真FPGA處理,讀取三個txt文件數(shù)據(jù)分別到三個寄存器中。再從寄存器中讀取數(shù)據(jù),以verilog語言進(jìn)行RGB轉(zhuǎn)YCbCr格式處理。在格式轉(zhuǎn)換過程中,同時以兩個always模塊處理乘、加和一個assig取高8位進(jìn)行運(yùn)算。得到Y(jié)CbCr的Y分量之后,將Y分量輸出到一個txt文件中,即為灰度轉(zhuǎn)換的512*512圖片的結(jié)果。通過python使用OpenCV將txt文件讀取,分配到512*512個像素中,即可得到灰度處理后的bmp圖像。

????????2.1讀取lzy.bmp圖像,通過配置miniconda環(huán)境中的PILLOW庫,讀取圖片RGB數(shù)據(jù),分離輸出RGB的值到red、green、blue.txt文件。

from PIL import Image

# 打開圖像文件
image = Image.open('lzy.bmp')  # 圖像文件路徑

# 獲得圖像的 RGB 數(shù)據(jù)
rgb_values = list(image.getdata())

# 分離 R、G、B 值
r_values = [rgb[0] for rgb in rgb_values]
g_values = [rgb[1] for rgb in rgb_values]
b_values = [rgb[2] for rgb in rgb_values]

# 將 R、G、B 值寫入文本文件
with open('red.txt', 'w') as file:
    for value in r_values:
        file.write(format(value, '02X') + '\n')

with open('green.txt', 'w') as file:
    for value in g_values:
        file.write(format(value, '02X') + '\n')

with open('blue.txt', 'w') as file:
    for value in b_values:
        file.write(format(value, '02X') + '\n')

# 關(guān)閉圖像文件
image.close()

????????2.2在vivado中用Verilog語言編寫RGB轉(zhuǎn)YCbCr源文件、并編寫testbench文件讀取數(shù)據(jù)進(jìn)行仿真。在源文件中,對于YCbCr格式由于在Verilog語言中,對浮點(diǎn)運(yùn)算處理較為復(fù)雜,所以乘100轉(zhuǎn)為整數(shù)數(shù)據(jù)處理,簡化運(yùn)算。通過Y =(77 *R + 150*G + 29 *B)>>8,進(jìn)行計算,先進(jìn)行乘法運(yùn)算,再進(jìn)行加法運(yùn)算,最后取高8位,得到應(yīng)輸出的Y值。

Source:

module rgb_to_ycbcr
(
    input clock, ?
    input rst,
    input [7:0] input_red_data,
    input [7:0] input_green_data,
    input [7:0] input_blue_data,

    output [7:0] output_gray_data
);

    reg [15:0] img_red_r0; 
    reg [15:0] img_green_r0; 
    reg [15:0] img_blue_r0; 

always@(posedge clock or negedge rst)
    begin
        if(rst)
            begin
            img_red_r0 <= 0;
            img_green_r0 <= 0;
            img_blue_r0 <= 0;
            end
        else
            begin
            img_red_r0 <= input_red_data * 8'd77;   
            img_green_r0 <= input_green_data * 8'd150;
            img_blue_r0 <= input_blue_data * 8'd29;
        end
    end

reg [15:0] img_Y_r0;

always@(posedge clock or negedge rst)
    begin
        if(rst)
            begin
                img_Y_r0 <= 0;
            end
        else
            begin
                img_Y_r0 <= img_red_r0 + img_green_r0 + img_blue_r0;
            end
    end

assign ?output_gray_data = img_Y_r0[15:8];

endmodule

???在testbench仿真文件中,通過分別讀取先前輸出的red/green/blue.txt文件到,red/green/blue_data寄存器中,設(shè)置基本仿真條件,從寄存器輸入數(shù)據(jù)到input_red/green/blue_data中。創(chuàng)建gray.txt文件,將輸出結(jié)果output_gray_data輸入到gray.txt文件中,即可得到灰度處理后的灰度值。

Simulation:

`timescale 1ns/1ps
module rgb_to_ycbcr_tb;
????reg clock;
????reg rst;

????reg [7:0] red_data [(512*512-1):0];
????reg [7:0] green_data [(512*512-1):0];
????reg [7:0] blue_data [(512*512-1):0];

????reg[18:0] cnt;

????integer file_id;

????wire[7:0] input_red_data;
????wire[7:0] input_green_data; ???
????wire[7:0] input_blue_data;
????
????wire[7:0] output_gray_data;

????initial begin

????    clock = 1'b0;
???    ?forever #10 clock = ~clock;

????end

????initial begin
?????cnt = 19'b0;
?????$readmemh("./red.txt", red_data);
?????$readmemh("./green.txt",green_data); ???
?????$readmemh("./blue.txt",blue_data); ??????
?????file_id = $fopen("./gray.txt", "w");
? ??end

????initial begin
?????rst = 1'b1;
?????#195 rst = 1'b0;
?????#20000000 $stop;
?????$fclose(file_id);
????end

????assign input_red_data = red_data[cnt[17:0]];
????assign input_green_data = green_data[cnt[17:0]];
????assign input_blue_data = blue_data[cnt[17:0]];

always @(posedge clock or posedge rst) ?????????????????????
????????if (rst) begin ?????????????????????????????????????????/
????????????cnt <= 19'b0; ??????????????????????????????????????/
????????end ????????????????????????????????????????????????????/
????????else if(cnt[18] == 1'b0) ???????????????????????????????/
????????begin ??????????????????????????????????????????????????/
????????????$fwrite(file_id, "0x%x\n", output_gray_data); ???????????/
????????????cnt <= cnt + 1'b1; ?????????????????????????????????/
????????end ????????????????????????????????????????????????????/

????rgb_to_ycbcr u_rgb_to_ycbcr(
????????????.clock(clock),
????????????.rst(rst),
????
????????????.input_red_data(input_red_data),
??????? ????.input_green_data(input_green_data),
????????????.input_blue_data(input_green_data),
??????
????????????.output_gray_data(output_gray_data)

????????);
?????
????endmodule

vivado仿真結(jié)果如下圖:

基于FPGA的圖像灰度處理,fpga開發(fā)

仿真總圖基于FPGA的圖像灰度處理,fpga開發(fā)

仿真開始階段圖基于FPGA的圖像灰度處理,fpga開發(fā)

仿真中間部分截取圖

????????將在python轉(zhuǎn)換得到的三個txt文件,放在工程文件的xsim文件夾里,仿真的結(jié)果都輸出在了xsim文件夾里的gray.txt。

基于FPGA的圖像灰度處理,fpga開發(fā)

blue.txt

基于FPGA的圖像灰度處理,fpga開發(fā)

red.txt

基于FPGA的圖像灰度處理,fpga開發(fā)

green.txt

基于FPGA的圖像灰度處理,fpga開發(fā)

gray.txt

????????可以看到red/green/blue.txt數(shù)據(jù)數(shù)量均為262136個,輸出到gray.txt文件中,數(shù)據(jù)量也為262136個十六進(jìn)制數(shù),所有數(shù)據(jù)都完成了運(yùn)算,表明仿真成功。

2.3在OpenCV中將輸出的txt文件轉(zhuǎn)為bmp圖像進(jìn)行輸出。

import cv2
import numpy as np

'''
main entry
'''


def main():
????picture = cv2.imread('./lzy.bmp')
????for i in range(512):
????????for j in range(512):
????????????picture[i, j] = 255

????f = open("./gray.txt", 'r')
????for i in range(512 * 512):
????????line = f.readline()
????????picture[int(i / 512), int(i % 512)] = int(line, 16)
????f.close()

????cv2.imwrite('./new_lzy.bmp', picture)
????cv2.waitKey(0)
????cv2.destroyAllWindows()


if __name__ == '__main__':
????main()

????????至此,可以看到在vivado仿真中,與FPGA圖像反轉(zhuǎn)處理進(jìn)行對比,在處理的數(shù)據(jù)量增加的情況下,處理時間并沒有改變,在圖像處理中,我們可以廣泛應(yīng)用FPGA的并行特性,實(shí)現(xiàn)硬件加速。在仿真中,以20ns一個周期的虛擬時鐘進(jìn)行仿真,處理速度就可以達(dá)到5.26ms,如果在FPGA實(shí)機(jī)中,以更快的時鐘速度運(yùn)行,并且不需要運(yùn)行仿真文件,直接讀取通過存儲器傳來的數(shù)據(jù),速度將可以獲得大更大的提高。

? ? ? ? 需要工程源碼的友友可以在下方評論。

????????文章來源地址http://www.zghlxwxcb.cn/news/detail-763538.html

到了這里,關(guān)于基于FPGA的圖像灰度處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于 FPGA 的彩色圖像灰度化的設(shè)計實(shí)現(xiàn)(image_stitche_x)

    基于 FPGA 的彩色圖像灰度化的設(shè)計實(shí)現(xiàn)(image_stitche_x)

    rgb2gray 模塊:彩色圖像灰度化處理,對串口接收的彩色圖像數(shù)據(jù)實(shí)時進(jìn)行灰度化處理; image_stitche_x 模塊:將串口接收的尺寸為 400 480 大小的彩色圖像與灰度化處理后的 400 480 大小的圖像數(shù)據(jù)以左右形式合并成一張 800*480 的圖像。 提示:以下是本篇文章正文內(nèi)容,下面案例可

    2024年02月05日
    瀏覽(23)
  • 基于FPGA的RGB圖像轉(zhuǎn)化為灰度圖實(shí)現(xiàn),通過MATLAB進(jìn)行輔助驗(yàn)證

    基于FPGA的RGB圖像轉(zhuǎn)化為灰度圖實(shí)現(xiàn),通過MATLAB進(jìn)行輔助驗(yàn)證

    目錄 1.算法運(yùn)行效果圖預(yù)覽 2.算法運(yùn)行軟件版本 3.部分核心程序 4.算法理論概述 5.算法完整程序工程 vivado2019.2 matlab2022a ? ? ? ? 基于FPGA的RGB圖像轉(zhuǎn)換為灰度圖實(shí)現(xiàn)是一種在圖像處理領(lǐng)域常見的操作。這種操作通過將彩色圖像的RGB三個通道轉(zhuǎn)換為單一的灰度值,使得圖像處理

    2024年02月09日
    瀏覽(30)
  • 基于FPGA的車牌識別,其中包括常規(guī)FPGA圖像處理算法

    基于FPGA的車牌識別,其中包括常規(guī)FPGA圖像處理算法

    基于FPGA的車牌識別,其中包括常規(guī)FPGA圖像處理算法:? ? ? ? ?rgb轉(zhuǎn)yuv, ? ? ? ?sobel邊緣檢測, ? ? ? ?腐蝕膨脹, ? ? ? ?特征值提取與卷積模板匹配。 有bit流可以直接燒錄實(shí)驗(yàn)。 保證無錯誤,完好,2018.3vivado版本,正點(diǎn)達(dá)芬奇Pro100t,板卡也可以自己更改移植一下。 所

    2024年04月14日
    瀏覽(51)
  • 基于FPGA的運(yùn)動目標(biāo)檢測跟蹤系統(tǒng)項(xiàng)目,F(xiàn)PGA項(xiàng)目,F(xiàn)PGA圖像處理(已實(shí)現(xiàn))

    基于FPGA的運(yùn)動目標(biāo)檢測跟蹤系統(tǒng)項(xiàng)目,F(xiàn)PGA項(xiàng)目,F(xiàn)PGA圖像處理(已實(shí)現(xiàn))

    ? 1.項(xiàng)目簡介 基于FPGA的運(yùn)動目標(biāo)檢測跟蹤系統(tǒng)項(xiàng)目,F(xiàn)PGA項(xiàng)目,F(xiàn)PGA圖像處理 FPGA項(xiàng)目 采用幀間差分法作為核心算法,該項(xiàng)目涉及圖像采集,顏色空間轉(zhuǎn)換,幀間差分核心算法,腐蝕等形態(tài)學(xué)處理,目標(biāo)定位,目標(biāo)標(biāo)識,圖像顯示等模塊。 通過該項(xiàng)目可以學(xué)習(xí)到以下兩方面內(nèi)容

    2024年02月07日
    瀏覽(23)
  • 基于FPGA的數(shù)字圖像處理【1.0】

    基于FPGA的數(shù)字圖像處理【1.0】

    ????????最近幾年圖像處理與機(jī)器視覺的發(fā)展非常迅速,圖像處理領(lǐng)域也被認(rèn)為是未來幾十年最有前途的領(lǐng)域之一。 ????????隨著現(xiàn)代圖像及視頻處理技術(shù)的不斷發(fā)展,人們對圖像處理提出了新的要求,圖像處理系統(tǒng)的硬件體積越來越小,實(shí)時性也越來越好。特別是最

    2024年04月14日
    瀏覽(26)
  • FPGA高端圖像處理開發(fā)板:鯤叔1號,寄托了未來的一塊開發(fā)板

    FPGA高端圖像處理開發(fā)板:鯤叔1號,寄托了未來的一塊開發(fā)板

    在CSDN寫博客傳播FPGA開發(fā)經(jīng)驗(yàn)已經(jīng)一年多了,幫助了不少人,也得罪了不少人,有的人用我的代碼贏得了某些比賽、得到了心儀的offer,也有的人天天罵我,anyway,哪怕只要還能幫助一個即將畢業(yè)的學(xué)生找到工作,哪怕只要還能幫助一個工程師解決項(xiàng)目開發(fā)的燃眉之急,我做的

    2024年02月21日
    瀏覽(25)
  • 基于fpga的圖像處理之3x3_5x5算子模板設(shè)計

    基于fpga的圖像處理之3x3_5x5算子模板設(shè)計

    微信公眾號上線,搜索公眾號 小灰灰的FPGA ,關(guān)注可獲取相關(guān)源碼,定期更新有關(guān)FPGA的項(xiàng)目以及開源項(xiàng)目源碼,包括但不限于各類檢測芯片驅(qū)動、低速接口驅(qū)動、高速接口驅(qū)動、數(shù)據(jù)信號處理、圖像處理以及AXI總線等 源碼工程鏈接 https://download.csdn.net/download/m0_50111463/88529239 本

    2024年02月05日
    瀏覽(35)
  • FPGA實(shí)戰(zhàn)開發(fā)-基于DDR的圖像緩存(下)

    FPGA實(shí)戰(zhàn)開發(fā)-基于DDR的圖像緩存(下)

    文章目錄 概要 整體架構(gòu)流程 技術(shù)名詞解釋 技術(shù)細(xì)節(jié) 小結(jié) 例如: 基于米聯(lián)科的學(xué)習(xí)資料,分享和學(xué)習(xí)同步,歡迎大家一起探討。 提示:這里可以添加技術(shù)整體架構(gòu) 例如: ? ? ? image_data_gen產(chǎn)生了測試圖片,之后進(jìn)入過W0 FIFO進(jìn)行視頻緩存。每次緩存1024個像素,就往通過F

    2024年02月17日
    瀏覽(17)
  • FPGA實(shí)戰(zhàn)開發(fā)-基于的ddr圖像緩存設(shè)計(上)

    FPGA實(shí)戰(zhàn)開發(fā)-基于的ddr圖像緩存設(shè)計(上)

    目錄 概要 整體架構(gòu)流程 技術(shù)名詞解釋 技術(shù)細(xì)節(jié) ?編輯 小結(jié) 提示:這里可以添加技術(shù)概要 本文主要基于DDR的圖像緩存設(shè)計。 提示:這里可以添加技術(shù)整體架構(gòu) 先用圖像產(chǎn)生模塊產(chǎn)生一個1080P60Hz的測試圖像,然后經(jīng)過FDMA進(jìn)入ddr3,緩存3幀后在讀出來。然后在經(jīng)過HDMI顯示。

    2024年02月08日
    瀏覽(53)
  • 基于FPGA的運(yùn)動目標(biāo)檢測跟蹤系統(tǒng)項(xiàng)目:從頂層架構(gòu)設(shè)計到RTL編寫與仿真,完整實(shí)現(xiàn)FPGA圖像處理算法實(shí)現(xiàn)的項(xiàng)目流程。

    基于FPGA的運(yùn)動目標(biāo)檢測跟蹤系統(tǒng)項(xiàng)目:從頂層架構(gòu)設(shè)計到RTL編寫與仿真,完整實(shí)現(xiàn)FPGA圖像處理算法實(shí)現(xiàn)的項(xiàng)目流程。

    基于FPGA的運(yùn)動目標(biāo)檢測跟蹤系統(tǒng)項(xiàng)目 ,F(xiàn)PGA項(xiàng)目,F(xiàn)PGA圖像處理 FPGA項(xiàng)目 采用幀間差分法作為核心算法,該項(xiàng)目涉及圖像采集,顏色空間轉(zhuǎn)換,幀間差分核心算法,腐蝕等形態(tài)學(xué)處理,目標(biāo)定位,目標(biāo)標(biāo)識,圖像顯示等模塊。 通過該項(xiàng)目可以學(xué)習(xí)到以下兩方面內(nèi)容 1.FPGA頂層架

    2024年04月16日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包