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

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

3天内不再提示

基于FPGA的图像差分处理

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

1背景知识

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

2 matlab仿真
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 Finite difference 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

3 FPGA设计

图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;


//assign TFT_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通道彩色实时输出中心差分

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

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

    关注

    1602

    文章

    21307

    浏览量

    593113
收藏 人收藏

    评论

    相关推荐

    FPGA图像处理之CLAHE算法

    FPGA图像处理--CLAHE算法(一)中介绍了为啥要用CLAHE算法来做图像增强。
    的头像 发表于 01-04 12:23 1474次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>图像</b><b class='flag-5'>处理</b>之CLAHE算法

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

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

    FPGA图像与视频处理培训

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

    实时图像处理FPGA芯片怎么选择

    本人想做数字图像处理方面的课题,不知道DSP和FPGA的器件怎么选择,希望有经验的大神给点建议,我做的这个课题是用FPGA和DSP处理
    发表于 08-06 10:54

    关于fpga图像处理

    各位大虾好,我现在正在做关于fpga的课题。想问问大家用fpga图像,图片以怎么的方式输入fpga再进行处理
    发表于 04-12 11:00

    求助图像差代码开发

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

    FPGA图像处理必备!

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

    学习FPGA图像处理必须知道的原理和方法

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

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

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

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

    基于DSP和FPGA的通用图像处理平台设计 摘要:设计一种基于DSP和FPGA架构的通用图像处理
    发表于 02-01 11:10 1392次阅读
    基于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 18次下载

    略谈FPGA图像处理

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

    FPGA中如何使用Verilog处理图像

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

    基于FPGA图像处理之直方图均衡

    最近一直在用FPGA图像处理相关的算法,主要是集中在图像增强和增晰方面。
    发表于 06-29 09:23 701次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>图像</b><b class='flag-5'>处理</b>之直方图均衡