在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

基于彩色MT9V034攝像頭 Bayer轉(zhuǎn)RGB FPGA實現(xiàn)

FPGA之家 ? 來源:宏強(qiáng)子 ? 作者:宏強(qiáng)子 ? 2021-06-12 17:12 ? 次閱讀

1 圖像bayer格式介紹

bayer格式是伊士曼·柯達(dá)公司科學(xué)家Bryce Bayer發(fā)明的,Bryce Bayer所發(fā)明的拜耳陣列被廣泛運(yùn)用數(shù)字圖像。Bayer格式是相機(jī)內(nèi)部的原始數(shù)據(jù), 一般后綴名為.raw。

對于彩色圖像,一般是三原色數(shù)據(jù),rgb格式。但是攝像頭一個像素點只有rgb中一種數(shù)據(jù)(下圖為bayer色彩濾波陣列)。但是有很多攝像頭直接輸出rgb和yuv格式,如ov5640、ov7725等等,這是因為在Sensor模組的內(nèi)部會有一個ISP模塊,會將 Sensor采集到的數(shù)據(jù)進(jìn)行插值和特效處理,所以直接輸出彩色圖像但也有攝像頭沒有ISP模塊,直接輸出Bayer數(shù)據(jù),這就需要自己寫B(tài)ayer轉(zhuǎn)rgb算法

2 MT9V034簡單介紹

做圖像處理的朋友都知道,MT9V034是一款十分出色的做機(jī)器視覺的攝像頭,一般都是灰度的。但是也有彩色款,當(dāng)時我覺得灰度的效果那么好,一時頭熱就買一個彩色款的。mt9v034用起來很方便,可以不用寄存器配置,上電默認(rèn)752*480分辨率。當(dāng)然也可以iic配置。

3 MT9V034 datasheet 簡單解析

1) 有效圖像 752x480;

最大時鐘為27Mhz;

最大幀率為60fps;

10位的adc(我的是八位的輸出,店家只將高8位引出,有點影響最后圖像的精度);

2)這是mt9v034Bayer陣列,注意輸出方向,從左到右,從上到下;

3)攝像頭ID號要需要查看攝像頭模塊PCB上的S_CTRL_ADR1和S_CTRL_ADR0引腳怎么連接的;

4)很明顯S_CTRL_ADR1, S_CTRL_ADR0是被拉低了,所以攝像頭ID為0x90.上面說到攝像頭只有高8位被引出,在這里可以證實了;

5)下面是大部分寄存器,mt9v034可配置的寄存器很少。0x00是芯片版本。03、04是攝像頭分辨率

6)datasheet就介紹到這里,更多信息需要自己去閱讀。

4 Bayer轉(zhuǎn)rgb算法解析

我是用shift_register IP緩存兩行數(shù)據(jù),形成2*2窗口(這是FPGA做圖像算法最常用的方法和IP),不會的朋友可以搜一搜,有很多博客可以學(xué)習(xí),一定要自己仿真一下,搞明白,這原理有點難理解。

根據(jù)窗口移動,不難發(fā)現(xiàn),總結(jié)出一條重要的規(guī)律:總共只有四種窗口,而且與行和列的奇偶有關(guān)。

假設(shè)計數(shù)器從零開始記數(shù):

1)第一種{行偶,列偶}

2)第二種{行偶,列奇}

3)第三種{行奇,列偶}

4)第四種{行奇,列奇}

5 算法實現(xiàn)

首先說明我是用Xilinx的ZYNQ FPGA,(Altera的也有類似的IP)。我直接說明一下IP的參數(shù)設(shè)置,其他的像怎么添加IP什么的我就不講了,不會的自己網(wǎng)上學(xué)習(xí)。

1)這是IP首頁,藍(lán)框自定義IP名,修改一下紅框的參數(shù),我們是8位數(shù)據(jù),一行數(shù)據(jù)為640個。Clock enable端與sclr端可以根據(jù)自己的要求決定勾不勾選。其他默認(rèn)就行,點擊ok可以了。

2)Vivado也提供端口例化模板,如下圖操作就行;

a97d14c6-c55a-11eb-9e57-12bb97331649.png

3)verilog源碼

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////////

// Company:

// Engineer: 宏強(qiáng)子

//

// Create Date: 2019/02/04 1056

// Design Name: colour MT98V034 bayer2rgb

// Module Name: MT_bayer2rgb

// Project Name: Colour_MT_bayer2rgb

// Target Devices: ZYNQ7020

// Tool Versions: vivado2018.3

// Description:

//

// Dependencies:

//

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

//

//////////////////////////////////////////////////////////////////////////////////

module MT_bayer2rgb(

//system singal

input s_rst_n ,

//cmos simgals

input vsync_i ,

input hsync_i ,

input pclk ,

input [7:0] bayer_data ,

//輸出

output vsync_o ,

output hsync_o ,

output [23:0] rgb_data

);

//========================================================================

// =========== Define Parameter and Internal signals ===========

//========================================================================/

reg [9:0] col_cnt ;

reg [8:0] row_cnt ;

reg hsync_i_1 ;

reg hsync_i_2 ;

reg vsync_i_1 ;

reg vsync_i_2 ;

wire [7:0] line_1 ;

wire [7:0] line_2 ;

reg [2:0] data_control ;

reg [7:0] line1_1 ;

reg [7:0] line1_2 ;

reg [7:0] line2_1 ;

reg [7:0] line2_2 ;

reg [7:0] rgb_r ;

reg [8:0] rgb_g ;

reg [7:0] rgb_b ;

//=============================================================================

//**************************** Main Code *******************************

//=============================================================================

//列計數(shù)

always @ (posedge pclk or negedge s_rst_n) begin

if(s_rst_n == 1‘b0)

col_cnt 《= 10’d0;

else if (hsync_i == 1‘b1)

col_cnt 《= col_cnt + 1’b1;

else

col_cnt 《= 10‘d0;

end

always @ (posedge pclk) begin

hsync_i_1 《= hsync_i;

hsync_i_2 《= hsync_i_1;

end

always @ (posedge pclk) begin

vsync_i_1 《= vsync_i;

vsync_i_2 《= vsync_i_1;

end

//行計數(shù)

always @ (posedge pclk or negedge s_rst_n) begin

if(s_rst_n == 1’b0)

row_cnt 《= 9‘d0;

else if(~hsync_i && hsync_i_1)

row_cnt 《= row_cnt + 1’b1;

else if (row_cnt 》= 9‘d481)

row_cnt 《= 9’d0;

end

//data_control

always @ (posedge pclk or negedge s_rst_n) begin

if(s_rst_n == 1‘b0)

data_control 《= 3’b100;

else if (hsync_i_1 == 1‘b1 && hsync_i == 1’b1)

data_control 《= {1‘b0,row_cnt[0],~col_cnt[0]};

else

data_control 《= 3’b100;

end

shift_ram shift_ram_1 (

.D (bayer_data ), // input wire [7 : 0] D

.CLK (pclk ), // input wire CLK

.CE (hsync_i ), // input wire CE

.SCLR (~s_rst_n ), // input wire SCLR

.Q (line_1 ) // output wire [7 : 0] Q

);

shift_ram shift_ram_2 (

.D (line_1 ), // input wire [7 : 0] D

.CLK (pclk ), // input wire CLK

.CE (hsync_i ), // input wire CE

.SCLR (~s_rst_n ), // input wire SCLR

.Q (line_2 ) // output wire [7 : 0] Q

);

always @ (posedge pclk or negedge s_rst_n) begin

if(s_rst_n == 1‘b0) begin

line1_1 《= 8’d0;

line1_2 《= 8‘d0;

line2_1 《= 8’d0;

line2_2 《= 8‘d0;

end

else begin

line1_1 《= line_1;

line1_2 《= line1_1;

line2_1 《= line_2;

line2_2 《= line2_1;

end

end

always @ (data_control) begin

case(data_control)

3’b000 : begin

rgb_r = line1_1 + 8‘d5;

rgb_g = line2_1 + line1_2 + 8’d10;

rgb_b = line2_2 + 8‘d5;

end

3’b001 : begin

rgb_r = line1_2 + 8‘d5;

rgb_g = line1_1 + line2_2 + 8’d10;

rgb_b = line2_1 + 8‘d5;

end

3’b010 : begin

rgb_r = line2_1 + 8‘d5;

rgb_g = line1_1 + line2_2 + 8’d10;

rgb_b = line1_2 + 8‘d5;

end

3’b011 : begin

rgb_r = line2_2 + 8‘d5;

rgb_g = line2_1 + line1_2 + 8’d10;

rgb_b = line1_1 + 8‘d5;

end

default: begin

rgb_r = 8’d0;

rgb_g = 9‘d0;

rgb_b = 8’d0;

end

endcase

end

assign rgb_data = {rgb_r,rgb_g[8:1],rgb_b};

assign vsync_o = vsync_i_2;

assign hsync_o = hsync_i_2;

endmodule

6 總結(jié)

最后說明一下,最后分辨率改為640*480,但是發(fā)現(xiàn)480指的是0~480,所以行計數(shù)器在481清零。由于我使用的是ZYNQ,所以直接使用PS端的IIC接口配置攝像頭。如果用默認(rèn)的分辨率就需要修改一下IP的深度和行計數(shù)器的清零的數(shù)值就行了。

編輯:jq

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

    關(guān)注

    31

    文章

    5423

    瀏覽量

    123442
  • 計數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2285

    瀏覽量

    96054
  • IIC
    IIC
    +關(guān)注

    關(guān)注

    11

    文章

    306

    瀏覽量

    39200

原文標(biāo)題:彩色MT9V034攝像頭 Bayer轉(zhuǎn)RGB FPGA實現(xiàn)

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

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

    社區(qū)安裝IPC攝像頭,跟安裝一般安防監(jiān)控攝像頭有什么區(qū)別?

    為了保護(hù)社區(qū)或其他公共場所的安全,往往需要安裝監(jiān)控攝像頭。但隨著越來越多的公共安全事件發(fā)生,傳統(tǒng)只單純拍攝和記錄畫面的監(jiān)控攝像頭已不能滿足社區(qū)安防的需求,需要更多功能的安防監(jiān)控攝像頭來進(jìn)行更智能化
    的頭像 發(fā)表于 04-03 10:00 ?378次閱讀
    社區(qū)安裝IPC<b class='flag-5'>攝像頭</b>,跟安裝一般安防監(jiān)控<b class='flag-5'>攝像頭</b>有什么區(qū)別?

    兆易創(chuàng)新網(wǎng)絡(luò)攝像頭解決方案

    根據(jù)Omdia估計,2023年全球安防攝像頭市場(高清模擬攝像頭、網(wǎng)絡(luò)攝像頭、防爆攝像頭和熱成像攝像頭)總體發(fā)貨量約為1.9億臺,預(yù)計到20
    的頭像 發(fā)表于 02-27 15:39 ?1052次閱讀
    兆易創(chuàng)新網(wǎng)絡(luò)<b class='flag-5'>攝像頭</b>解決方案

    安防監(jiān)控攝像頭氣密性測試案例-連拓精密#攝像頭氣密檢測設(shè)備

    攝像頭
    連拓精密科技
    發(fā)布于 :2024年12月11日 15:00:21

    飛凌嵌入式-ELFBOARD OV5640攝像頭講解第2期

    和U10為兩個LDO,U9將3.3V電源降壓到2.8V攝像頭的模擬電源和IO電源供電。U10將3.3V電源降壓到1.5
    發(fā)表于 12-02 13:35

    攝像頭及紅外成像的基本工作原理

    本文介紹了攝像頭及紅外成像的基本工作原理,攝像頭可以將看到的圖像真實的呈現(xiàn)出來,所見即所得! 攝像頭如何工作? 攝像頭可以將看到的圖像真實的呈現(xiàn)出來,所見即所得。 ? 比如人眼看到的一
    的頭像 發(fā)表于 11-25 09:28 ?2018次閱讀
    <b class='flag-5'>攝像頭</b>及紅外成像的基本工作原理

    飛凌嵌入式-ELFBOARD OV5640攝像頭簡介第二期

    和U10為兩個LDO,U9將3.3V電源降壓到2.8V攝像頭的模擬電源和IO電源供電。U10將3.3V電源降壓到1.5
    發(fā)表于 11-25 08:53

    《DNK210使用指南 -CanMV版 V1.0》第二十六章 攝像頭圖像捕獲實驗

    模塊用于驅(qū)動攝像頭,能夠?qū)?b class='flag-5'>攝像頭進(jìn)行配置并進(jìn)行圖像數(shù)據(jù)的捕獲,從而實現(xiàn)一些拍攝任務(wù)。sensor模塊提供了reset()函數(shù),用于重置并初始化攝像頭,reset()函數(shù)如下所示
    發(fā)表于 10-23 10:05

    用于環(huán)視和CMS攝像頭系統(tǒng)的四通道攝像頭應(yīng)用程序

    電子發(fā)燒友網(wǎng)站提供《用于環(huán)視和CMS攝像頭系統(tǒng)的四通道攝像頭應(yīng)用程序.pdf》資料免費(fèi)下載
    發(fā)表于 10-11 10:02 ?0次下載
    用于環(huán)視和CMS<b class='flag-5'>攝像頭</b>系統(tǒng)的四通道<b class='flag-5'>攝像頭</b>應(yīng)用程序

    NVIDIA多攝像頭追蹤工作流的應(yīng)用架構(gòu)

    為提高安全性并優(yōu)化運(yùn)營,倉庫、工廠、體育場、機(jī)場等大型區(qū)域通常會有數(shù)百個攝像頭進(jìn)行監(jiān)控。多攝像頭追蹤指的是通過這些攝像頭追蹤對象,并精確測量其活動,以此實現(xiàn)對空間的有效監(jiān)控和管理。
    的頭像 發(fā)表于 09-06 14:23 ?732次閱讀
    NVIDIA多<b class='flag-5'>攝像頭</b>追蹤工作流的應(yīng)用架構(gòu)

    CANape Option DA中參考攝像頭的標(biāo)定演示#CANape

    攝像頭
    北匯信息POLELINK
    發(fā)布于 :2024年07月30日 12:37:29

    安防攝像頭IPC芯片的應(yīng)用

    安防攝像頭IPC芯片的應(yīng)用
    的頭像 發(fā)表于 07-22 09:42 ?1323次閱讀
    安防<b class='flag-5'>攝像頭</b>IPC芯片的應(yīng)用

    如何將連接到FPGA攝像頭數(shù)據(jù)發(fā)送到主機(jī)PC?

    我正在尋找一種方法,將連接到 FPGA攝像頭數(shù)據(jù)發(fā)送到主機(jī) PC。 攝像頭 ---> FPGA ---> FX3 ---> USB 主機(jī) (PC) 我
    發(fā)表于 07-05 07:31

    基于FPGA攝像頭心率檢測裝置設(shè)計

    的 OpenCV 等開源庫,可以使眾多圖像處理步驟得到簡化,有利于實現(xiàn)更復(fù)雜的功能。 2.4 各模塊介紹2.4.1.數(shù)據(jù)采集模塊 使用攝像頭拍攝人臉畫面,通過 usb 接口與 fpga 開發(fā)板相連接。其中
    發(fā)表于 07-01 17:58

    esp32是如何與攝像頭連接的呢?

    新手。看了esp32的模組中沒有攝像頭的硬件接口,請問它是如何與攝像頭連接的呢
    發(fā)表于 06-28 15:01
    主站蜘蛛池模板: 美女被异性狂揉下部羞羞视频 | 天天操天天射天天色 | 天天爱天天干天天操 | 夜夜摸夜夜爽 | 女同性大尺度床戏视频 | 天天曰天天干天天操 | 成年人三级视频 | 在线天堂中文新版有限公司 | 香蕉爱爱网| 91p0rn永久备用地址二 | 成年人看的黄色 | 性欧美精品 | 亚洲欧美视频二区 | 色片免费网站 | 黄色在线网 | 神马午夜在线观看 | 性欧美xxx 不卡视频 | 污夜影院| 中文字幕有码在线视频 | 欧美高清一级 | 高清一区二区三区四区五区 | 狠狠狠狠狠狠狠狠 | 欧美色p | 亚洲一区免费在线 | 天天干天天干天天干天天 | 狠狠婷婷 | 九九热九九| 天堂在线观看视频 | 亚欧色| 天天做天天爱天天射 | 一卡二卡四卡无卡乱免费网页 | 国内精品久久影视免费 | 天天摸天天碰成人免费视频 | 中文字幕一区在线观看 | 美女中出视频 | 亚洲国产精品自在现线让你爽 | 性xxxx黑人与亚洲 | 日本黄页网站在线观看 | 亚洲四虎影院 | 狠狠色丁香婷婷综合欧美 | 亚洲国产成人久久99精品 |