首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >教您使用FPGA来画铅笔画

教您使用FPGA来画铅笔画

作者头像
FPGA开源工作室
发布2019-10-29 10:31:04
发布2019-10-29 10:31:04
5870
举报
文章被收录于专栏:FPGA开源工作室FPGA开源工作室

教您使用FPGA来画铅笔画

作者:lee神

1 概要

灰度级(8bit 0到255 )代表从黑到白,中间的介于黑白之间。对比度比较明显的灰度级分布比较均匀,二值图像是灰度图像的特例。

本节没有多大的知识难度,主要在于灰度的阈值调节来形成二值灰度图像,经过此节我们也可以使用FPGA阈值调节来绘出油笔画或者钢笔画。

本节主要以示例图像为主供大家欣赏。

2 FPGA实现

图1 实现铅笔画FPGA模块框图

图1中,我们输入的是彩色图像(RGB格式),经过串口传图进入FPGA,通过Ycbcr模块后变成Ycbcr格式图像,其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值。

最后进行阈值比较后输出二值图像(Binary image)或者更多值图像。

FPGA源码:

//------------------------------------------------

// THRESHOLD

//------------------------------------------------

parameter THRESHOLD = 8'd 100;

//------------------------------------------------

//Gray image threshold processing

//-----------------------------------------------

always @(posedge TFT_clk or negedge Rst_n) begin

if(!Rst_n)

gray <= 8'h00;

else if(gray_en)

if(o_y_8b > THRESHOLD)

gray <= 8'hff;

else

gray <= 8'h00;

else

;

end

assign TFT_de = gray_en;

assign TFT_rgb = {gray[7:3],gray[7:2],gray[7:3]}; //Y

代码解释:

根据灰度阈值的大小不同我们将图像大于阈值的部分变成白色,小于的部分变成黑色。

结果展示:

图2 RGB图像原图

图3 lena二值画

图4 car原图

图5 阈值处理后的car

结果分析:

由于手机拍照的技术不好导致不能实际显示。对于图像过黑我们可以增加输出的灰度值使它更加接近铅笔颜色。对于背景过度明亮我们可以降低输出的背景量度,已达到效果最好。

如果需要得到效果更佳的铅笔画我们可以采用多阈值多个不同颜色输出处理。

推荐阅读

FPGA图像处理之rgbtogray算法的实现

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA开源工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档