news 2026/5/20 15:31:09

RGB转Gray灰度图设计-高层次综合设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RGB转Gray灰度图设计-高层次综合设计


一、RGB转GRAY的常用方式
1.BT.601标准--标清模式
Gray = 0.299 × R + 0.587 × G + 0.114 × B

2.BT.709标准--高清模式
Gray = 0.2126 × R + 0.7152 × G + 0.0722 × B

3.粗略计算
‌Gray = (R + G + B) / 3

二、FPGA实现
为了节约资源,避免浮点运算,使用浮点数定点化设计
6位精度(推荐用于 FPGA/嵌入式)‌
‌Gray = (R × 19595 + G × 38469 + B × 7472) >> 16‌
精度高,误差小 ‌‌。

‌7位精度(速度与精度平衡)‌
‌Gray = (R × 38 + G × 75 + B × 15) >> 7‌
适合资源受限环境 ‌‌。

‌2位精度(仅用于实时预览或游戏)‌
‌Gray = (R + (G << 1) + B) >> 2


三、代码实现
1.直接使用浮点数来实现
void rgb2gray(hls::stream<ap_axiu<24,1,1,1> > &in_stream,
hls::stream<ap_axiu<8,1,1,1> > &out_stream) {
#pragma HLS INTERFACE axis port=in_stream
#pragma HLS INTERFACE axis port=out_stream
ap_axiu<8,1,1,1> pixel;
while(!in_stream.empty()) {
#pragma HLS PIPELINE II=1
auto rgb = in_stream.read();
uint8_t gray = (rgb.data >> 16) * 0.299 +
((rgb.data >> 8) & 0xFF) * 0.587 +
(rgb.data & 0xFF) * 0.114;
pixel.data = gray;
out_stream.write(pixel);
}
}

2.定点计算
定点化设计一
void rgb2gray(hls::stream<ap_axiu<24,1,1,1> > &in_stream,
hls::stream<ap_axiu<8,1,1,1> > &out_stream) {
#pragma HLS INTERFACE axis port=in_stream
#pragma HLS INTERFACE axis port=out_stream
ap_axiu<8,1,1,1> pixel;

while(!in_stream.empty()) {
#pragma HLS LOOP_TRIPCOUNT min=0 max=0 avg=0
#pragma HLS PIPELINE II=1
ap_axiu<24,1,1,1> rgb = in_stream.read();
ap_uint<8> gray = ap_fixed<32,16>(rgb.data(23,16)) * ap_fixed<32,16>(0.299f) +
ap_fixed<32,16>(rgb.data(15,8)) * ap_fixed<32,16>(0.587f) +
ap_fixed<32,16>(rgb.data(7,0)) * ap_fixed<32,16>(0.114f);

pixel.data = gray;
out_stream.write(pixel);
}
}

定点化设计二
void rgb2gray(hls::stream<ap_axiu<24,1,1,1> > &in_stream,
hls::stream<ap_axiu<8,1,1,1> > &out_stream) {
#pragma HLS INTERFACE axis port=in_stream
#pragma HLS INTERFACE axis port=out_stream
ap_axiu<8,1,1,1> pixel;

while(!in_stream.empty()) {
#pragma HLS LOOP_TRIPCOUNT min=0 max=0 avg=0
#pragma HLS PIPELINE II=1
ap_axiu<24,1,1,1> rgb = in_stream.read();

ap_uint<8> gray1 = ap_fixed<32,16>(rgb.data(23,16)) * ap_fixed<32,16>(0.299f);
ap_uint<8> gray2 = ap_fixed<32,16>(rgb.data(15,8)) * ap_fixed<32,16>(0.587f);
ap_uint<8> gray3 = ap_fixed<32,16>(rgb.data(7,0)) * ap_fixed<32,16>(0.114f);

ap_uint<8> gray = gray1 + gray2 + gray3;

pixel.data = gray;

out_stream.write(pixel);
}
}

定点化设计三:
void rgb2gray(hls::stream<ap_axiu<24,1,1,1> > &in_stream,
hls::stream<ap_axiu<8,1,1,1> > &out_stream) {
#pragma HLS INTERFACE axis port=in_stream
#pragma HLS INTERFACE axis port=out_stream
ap_axiu<8,1,1,1> pixel;


ap_uint<16> i = 0;
//while(i < 2000) {
while(!in_stream.empty()){
//#pragma HLS LATENCY min=5 max=5
#pragma HLS LOOP_TRIPCOUNT min=0 max=0 avg=0
#pragma HLS PIPELINE II=1
ap_axiu<24,1,1,1> rgb = in_stream.read();

ap_uint<8> gray1 = ap_fixed<24,8>(rgb.data(23,16)) * ap_fixed<24,8>(0.299f);
ap_uint<8> gray2 = ap_fixed<24,8>(rgb.data(15,8)) * ap_fixed<24,8>(0.587f);
ap_uint<8> gray3 = ap_fixed<24,8>(rgb.data(7,0)) * ap_fixed<24,8>(0.114f);

ap_uint<8> gray = gray1 + gray2 + gray3;

pixel.data = gray;

out_stream.write(pixel);
// i++;
}
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 15:29:56

Taotoken的API密钥管理与访问控制功能为安全开发带来的便利

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken的API密钥管理与访问控制功能为安全开发带来的便利 在实际开发中&#xff0c;尤其是团队协作时&#xff0c;API密钥的泄露…

作者头像 李华
网站建设 2026/5/20 15:29:20

3个AI补帧魔法秘籍:如何让老旧视频重获新生

3个AI补帧魔法秘籍&#xff1a;如何让老旧视频重获新生 【免费下载链接】Squirrel-RIFE 效果更好的补帧软件&#xff0c;显存占用更小&#xff0c;是DAIN速度的10-25倍&#xff0c;包含抽帧处理&#xff0c;去除动漫卡顿感 项目地址: https://gitcode.com/gh_mirrors/sq/Squi…

作者头像 李华
网站建设 2026/5/20 15:28:05

OpenCV实战:用Python和Hough变换5分钟搞定图片中的直线和圆检测

PythonOpenCV实战&#xff1a;5分钟掌握霍夫变换的直线与圆检测技巧 在工业质检、建筑图纸分析和自动化测量等领域&#xff0c;快速准确地识别图像中的几何形状是常见需求。想象一下&#xff0c;当你面对一张布满直线和圆形的机械零件图纸时&#xff0c;如何用代码自动提取这些…

作者头像 李华
网站建设 2026/5/20 15:25:08

3小时搭建微信小程序商城:海风小店开源项目实战指南

3小时搭建微信小程序商城&#xff1a;海风小店开源项目实战指南 【免费下载链接】hioshop-miniprogram 微信小程序商城&#xff0c;开源免费商用&#xff0c;海风小店 项目地址: https://gitcode.com/gh_mirrors/hi/hioshop-miniprogram 在移动电商蓬勃发展的今天&#…

作者头像 李华
网站建设 2026/5/20 15:25:06

进山没信号,如何把“安全感”带在身上?北斗卫星徽章W1为户外徒步保驾护航

当户外徒步成为越来越多人亲近自然、释放压力、探索世界的生活方式&#xff0c;安全保障也正在成为每一次出发前不可忽视的重要准备。从城市近郊的轻徒步&#xff0c;到山地穿越、露营登山、长线探险&#xff0c;户外场景往往伴随着复杂地形与不确定环境。进入山谷、密林、高海…

作者头像 李华