0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心
发布

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA的图像差分处理

电子工程师 2018-04-06 11:53 次阅读

1背景知识

差分图像在许多领域得到了广泛的应用,比如:视频压缩,生物医学诊断,天文学,遥感,人脸识别等。

2matlab仿真
MATLAB源码:
Main.m
I = imread('flower.bmp'); figure, imshow(I);
I_gray = rgb2gray(I);figure,imshow(I_gray);
Id = mipcentraldiff(I_gray,'dx'); figure, imshow(Id);


Mipcentraldiff.m
function dimg = mipcentraldiff(img,direction)
% MIPCENTRALDIFF Finitedifference calculations
%
% DIMG = MIPCENTRALDIFF(IMG,DIRECTION)
%
% Calculates the central-difference for?a given direction
% IMG : input image
% DIRECTION : 'dx'?or 'dy'
% DIMG : resultant image
%
% See also MIPFORWARDDIFF MIPBACKWARDDIFF MIPSECONDDERIV
% MIPSECONDPARTIALDERIV
% Omer Demirkaya, Musa Asyali, Prasana Shaoo, ...
% Medical Image Processing Toolbox
img = padarray(img,[1 1],'symmetric','both');
[row,col] = size(img);
dimg = zeros(row,col);
switch(direction)
case'dx',
dimg(:,2:col-1) = (img(:,3:col)-img(:,1:col-2))/2;
case'dy',
dimg(2:row-1,:) = (img(3:row,:)-img(1:row-2,:))/2;
otherwise,
disp('Direction is unknown');
end
dimg = dimg(2:end-1,2:end-1);

仿真结果:

图1 RGB原图

图2 gray

图3 central_diff

3FPGA设计

图4 基于串口传图的中心差分

如图4所示,我们将RGB565格式转化为Ycbcr格式,Y通道进入中心差分模块,完成中心差分算法

FPGA源码:

*/
////////////////////////////////////////////////////////////////
wire [15:0] rgb;
wire hs;
wire vs;
wire de;


wire o_hs;
wire o_vs;
wire o_de;


wire[7 : 0]o_y_8b;
wire[7 : 0]o_cb_8b;
wire[7 : 0]o_cr_8b;


//assignTFT_rgb = {o_y_8b[7:3],o_y_8b[7:2],o_y_8b[7:3]}; //Y
//assign TFT_rgb = {o_cb_8b[7:3],o_cb_8b[7:2],o_cb_8b[7:3]}; //cb
//assign TFT_rgb = {o_cr_8b[7:3],o_cr_8b[7:2],o_cr_8b[7:3]}; //cr


//////////////////////////////////////////////////////////////
tft_ctrl tft_ctrl(
.Clk9M(clk9M),//系统输入时钟9MHZ
.Rst_n(Rst_n),//复位输入,低电平复位
.data_in({Rd_data[7:0],Rd_data[15:8]}),//待显示数据
.hcount(),//TFT行扫描计数器
.vcount(),//TFT场扫描计数器
.TFT_RGB(rgb),//TFT数据输出
.TFT_HS(hs),//TFT行同步信号
.TFT_VS(vs),//TFT场同步信号
.TFT_CLK(TFT_clk),//TFT像素时钟
.TFT_DE(de),//TFT数据使能
.TFT_begin(tft_begin),
.TFT_PWM(TFT_pwm)//TFT背光控制
);



rgb_to_ycbcr rgb_to_ycbcr_inst(
.clk(TFT_clk),
.i_r_8b({rgb[15:11],3'b0}),
.i_g_8b({rgb[10:5],2'b0}),
.i_b_8b({rgb[4:0],3'b0}),

.i_h_sync(hs),
.i_v_sync(vs),
.i_data_en(de),

.o_y_8b(o_y_8b),
.o_cb_8b(o_cb_8b),
.o_cr_8b(o_cr_8b),

.o_h_sync(o_hs),
.o_v_sync(o_vs),
.o_data_en(o_de)
);

reg [7:0] diff_data;
reg [7:0] o_y_8b_r0;
reg [7:0] o_y_8b_r1;
reg [7:0] o_y_8b_r2;


reg hs0;
reg hs1;
reg hs2;


reg vs0;
reg vs1;
reg vs2;


reg de0;
reg de1;
reg de2;


always @(posedge TFT_clk or negedge Rst_n) begin
if(!Rst_n) begin
hs0 <= 0;
hs1 <= 0;
hs2 <= 0;

vs0 <= 0;
vs1 <= 0;
vs2 <= 0;

de0 <= 0;
de1 <= 0;
de2 <= 0;

o_y_8b_r0 <= 0;
o_y_8b_r1 <= 0;
o_y_8b_r2 <= 0;
end
else begin
hs0 <= o_hs;
hs1 <= hs0;
hs2 <= hs1;

vs0 <= o_vs;
vs1 <= vs0;
vs2 <= vs1;

de0 <= o_de;
de1 <= de0;
de2 <= de1;

o_y_8b_r0 <= o_y_8b;
o_y_8b_r1 <= o_y_8b_r0;
o_y_8b_r2 <= o_y_8b_r1;
end
end


always @(posedge TFT_clk or negedge Rst_n) begin
if(!Rst_n)
diff_data <= 0;
else if(de2)
diff_data <= (o_y_8b_r2 - o_y_8b_r0) >>1;
else
diff_data <= diff_data;
end


assign TFT_rgb = {diff_data[7:3],diff_data[7:2],diff_data[7:3]};
assign TFT_de = de1;
assign TFT_hs = hs1;
assign TFT_vs = vs1;
Endmodule


结果展示:

图5 FPGA中心差分结果

如图5所示,由于手机拍摄原因,图片不是很清晰,但基本结果一致,实验成功。我们将把中心差分模块移植到基于ov5640的实时图像采集系统完成rgb三通道的彩色输出。

图6 基于ov5640的r/g/b通道彩色实时输出中心差分

实验结果成功,部分带有彩色。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1619

    文章

    21467

    浏览量

    597744
收藏 人收藏

    评论

    相关推荐

    #FPGA#图像处理图像处理(概论)

    fpga 图像处理
    奔跑的小鑫
    发布于 :2023年07月27日 10:15:04

    FPGA图像与视频处理培训

    FPGA 图像与视频 处理培训课程目标: 1、深入了解JPEG标准和H.264标准协议; 2、掌握 FPGA图像
    发表于07-16 14:05

    求助图像差代码开发

    我现在用的是黑金ALINX822 FPGA视频 处理开发平台。我想做的是接入一路AV视频,取该视频流的第一帧作为背景,其后的每一帧都和该帧做差 ,将差 后的结果输出至VGA接口。输入数据
    发表于04-15 10:55

    FPGA图像处理必备!

    图像细节。 FPGA 图像 处理方法1、 图像增强两大方法:空间域方法和时间域方法(以后再详述)2、 图像
    发表于12-26 15:57

    基于DSP和FPGA的通用图像处理平台设计

    设计一种基于DSP和 FPGA架构的通用 图像 处理平台,运用 FPGA实现微 处理器接口设计,并对 图像
    发表于12-25 17:06 61次下载

    基于DSP和FPGA的通用图像处理平台设计

    基于DSP和 FPGA的通用 图像 处理平台设计 摘要:设计一种基于DSP和 FPGA架构的通用 图像 处理
    发表于02-01 11:10 1439次阅读
    基于DSP和<b class='flag-5'>FPGA</b>的通用<b class='flag-5'>图像</b><b class='flag-5'>处理</b>平台设计

    基于FPGA图像采集与处理

    基于 FPGA图像采集与 处理,是一个适合初学者学习的书籍。 内容详细完整。
    发表于03-04 15:48 50次下载

    FPGA图像处理

    FPGA 图像 处理
    发表于12-14 22:29 19次下载

    基于FPGA和DSP的高速图像处理系统

    基于 FPGA和DSP的高速 图像 处理系统
    发表于10-19 13:43 20次下载
    基于<b class='flag-5'>FPGA</b>和DSP的高速<b class='flag-5'>图像</b><b class='flag-5'>处理</b>系统

    略谈FPGA图像处理

    FPGA 图像 处理之路,从此开始,接下来,让我们把时间交给“ 图像 处理”。一休哥在动笔之前,一直在犹豫,反复思考着一个问题,这个问题一直困扰着我
    发表于05-09 17:05 4064次阅读

    FPGA图像处理方法

    图像细节。 FPGA 图像 处理方法 1、 图像增强 两大方法:空间域方法和时间域方法(以后再详述) 2、 图像
    的头像 发表于12-25 14:15 3241次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>图像</b><b class='flag-5'>处理</b>方法

    FPGA设计中 Verilog HDL实现基本的图像滤波处理仿真

    今天给大侠带来基于 FPGA的数字视频信号 处理器设计,由于篇幅较长, 三篇。今天带来第三篇,下篇,程序测试与运行。话不多说,上货。 之前也有 图像 处理
    的头像 发表于07-13 09:30 2674次阅读

    FPGA中如何使用Verilog处理图像

    FPGA项目旨在详细展示如何使用Verilog 处理 图像,从Verilog中读取输入位图 图像(.bmp), 处理并将
    的头像 发表于09-23 15:50 5700次阅读

    FPGA学习-基于FPGA图像处理

    图像 处理系统设计注意点: 1.将算法开发和 FPGA实现分离 用软件的 图像 处理环境可以使用大批量的 图像
    的头像 发表于02-15 16:35 1063次阅读

    FPGA图像处理方法

    图像细节。 FPGA 图像 处理方法 1、 图像增强 两大方法:空间域方法和时间域方法(以后再详述) 2、
    的头像 发表于12-02 13:15 862次阅读