基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)

这篇具有很好参考价值的文章主要介绍了基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
源码工程链接
https://download.csdn.net/download/m0_50111463/88529260
**

基于fpga的图像处理之图像灰度化处理

**
本文的思路框架:
fpga灰度化,FPGA工程项目,FPGA,fpga开发,图像处理,matlab

①本文采用两种算法进行灰度处理,平均法和加权均值法;加权均值法采用了直接公式求解和查找表两种方式验证
②FPGA设计中三个设计技巧,可用于工程项目借鉴,一是宏定义参数化设计;二是generate if参数定义;三是调用xilinx的rom原语实现ROM核,省去ip核的调用
③通过Matlab实现图片转化hex,存储至原始图片txt文档,用于vivado+modelsim的仿真输入
④将原始图片txt文档,导入fpga开发平台,通过灰度处理算法输出,并将输出数据存储至算法处理后的txt文档
⑤通过Matlab将算法灰度化处理后的txt文档,通过代码转化至图片格式,显示处理
一、图像灰度化处理基础知识
1、基本原理
将彩色图像转化为灰度图像的过程称为图像灰度化处理。
2、RGB888
常见的 24 位深度彩色图像RGB888 中的每个像素的颜色由 R、G、B 三个分量决定,并且三个分量各占 1 个字节,每
个分量可以取值 0~255,这样一个像素点可以有 1600 多万(255255255)的颜色的变化范围。
3、YUV和YCbCr
YUV(YCbCr)是欧洲电视系统所采用的一种颜色编码方法。在 YUV 色彩空间中,每一个颜色有一个亮度信号 Y,和两个色度信号 U 和 V。Y表示明亮度(Luminance 或 Luma),也就是灰阶值;
U和V表示色度(Chrominance 或 Chroma),用于描述影像的饱和度和色调。
4、灰度化图像的方法
彩色转灰度比较简单的方法就是直接拿 RGB 中的一个通道来显示灰度图像,这种方法简单且不做任何的处理。
下面介绍几种常用的求取灰度图像的方法:
4.1、 平均法
I(x,y)表示灰度图像,取彩色图像 RGB 三个通道每个值的 1/3 相加,公式如下:
I(x,y) = 1/3 * I_R(x,y) +1/3 * I_G(x,y)+ 1/3 * I_B(x,y)
4.2、 加权均值法
I(x,y)表示灰度图像,取彩色图像 RGB 三个通道每个值乘相应的权值后相加,公式如下:
I(x,y) = 0.299 * I_R(x,y) +0.587 * I_G(x,y)+ 0.114 * I_B(x,y)
这是最流行的方法。几个加权系数 0.299,0.587,0.114 是根据人的亮度感知系统调节出来的参数,是个广泛
使用的标准化参数。
YCbCr 转换RGB 公式:
Y = 0.2568R + 0.5041G + 0.0979B + 16;
Cb = -0.1482
R - 0.2910G + 0.4392B + 128;
Cr = 0.4392R - 0.3678G - 0.0714*B + 128;
二、Matlab实现原始图片转化hex和图像灰度化处理后图片显示
1、原始图片转化hexmatlab源码
此源码为一张图片的显示,生成hex为24bit的RGB888数据。若为多张,可以修改。
clear;clear all;clc;
%获取图像
image_in = imread(‘lena_1280x720.jpg’);
imshow(image_in),title(‘The original image’);
%生成图像txt文件
FileName=[‘image_’,num2str(size(image_in,1)),‘_’,num2str(size(image_in,2)),‘.txt’];
[row,col,n] = size(image_in);
fid = fopen(FileName,‘w’);
for x = 1:row
for y = 1:col
image_R = dec2hex(image_in(x,y,1));
image_G = dec2hex(image_in(x,y,2));
image_B = dec2hex(image_in(x,y,3));
[rm,rn]=size(image_R);
[gm,gn]=size(image_G);
[bm,bn]=size(image_B);
if rn == 1
image_R =[‘0’,image_R];
elseif rn == 0
image_R =‘00’;
end
if gn == 1
image_G =[‘0’,image_G];
elseif gn == 0
image_G =‘00’;
end
if bn == 1
image_B =[‘0’,image_B];
elseif bn == 0
image_B =‘00’;
end
image_hex=[image_R,image_G,image_B];
fprintf(fid,‘%s\n’,image_hex);
end
end
fclose(fid);
2、图像灰度化处理后图片显示hexmatlab源码
clear;clear all;clc;
row = 720;
col = 1280;
n = 3;
image_sim_pass = uint8(zeros(row,col,n));
fid = fopen(‘image_720_1280_gray_out.txt’,‘r’);
for x = 1:row
for y = 1:col
RGB = fscanf(fid,‘%s’,1);
image_sim_pass(x,y,1) = uint8(hex2dec(RGB(1:2)));
image_sim_pass(x,y,2) = uint8(hex2dec(RGB(3:4)));
image_sim_pass(x,y,3) = uint8(hex2dec(RGB(5:6)));
end
end
fclose(fid);
image_sim_pass1 = uint8(zeros(row,col,n));
fid1 = fopen(‘image_720_1280_gray_out1.txt’,‘r’);
for x = 1:row
for y = 1:col
RGB1 = fscanf(fid1,‘%s’,1);
image_sim_pass1(x,y,1) = uint8(hex2dec(RGB1(1:2)));
image_sim_pass1(x,y,2) = uint8(hex2dec(RGB1(3:4)));
image_sim_pass1(x,y,3) = uint8(hex2dec(RGB1(5:6)));
end
end
fclose(fid1);
image_1 = imread(‘lena_1280x720.jpg’);
subplot(3,1,1);
imshow(image_1), title(‘The original image’);
subplot(3,1,2);
imshow(image_sim_pass),title(‘After processing images’);
imwrite(image_sim_pass,‘lena_1280x720_sim_pass.jpg’);
subplot(3,1,3);
imshow(image_sim_pass1),title(‘After processing images1’);
imwrite(image_sim_pass1,‘lena_1280x720_sim_pass1.jpg’);
三、FPGA图像灰度化处理源码
1、灰度化处理算法之平均值法
求平均法GRAY = (R+B+G)/3
=((R+B+G)85)>>8
=((R+B+G)
(2 ^ 6 + 2 ^ 4+2 ^ 2+1))>>8
fpga灰度化,FPGA工程项目,FPGA,fpga开发,图像处理,matlab

2、灰度化处理算法之加权均值法(直接公式法)
典型灰度转换公式Gray = R0.299+G0.587+B0.114=(R77 + G150 + B29) >>8
fpga灰度化,FPGA工程项目,FPGA,fpga开发,图像处理,matlab

3、灰度化处理算法之加权均值法(查找表法)
将RGB888对应的256组数值,预先存放于rom中,采用rom直接查表实现
fpga灰度化,FPGA工程项目,FPGA,fpga开发,图像处理,matlab
fpga灰度化,FPGA工程项目,FPGA,fpga开发,图像处理,matlab

四、FPGA开发技巧
1、宏定义使用技巧
基于输入数据可能存在RGB565和RGB888两种数据格式,因此采用宏定义方式来兼容不同的接口
采用
`define RG565
定义接口RGB565接口,否则为RGB888数据接口

采用
`ifdef
···

`else
····

`endif
来实现两种不同接口的功能设计

fpga灰度化,FPGA工程项目,FPGA,fpga开发,图像处理,matlab

2、generate if参数定义
通过generata if···else if ···endgenerate来实现不同代码的功能实现,参数化定义
fpga灰度化,FPGA工程项目,FPGA,fpga开发,图像处理,matlab
fpga灰度化,FPGA工程项目,FPGA,fpga开发,图像处理,matlab
fpga灰度化,FPGA工程项目,FPGA,fpga开发,图像处理,matlab
fpga灰度化,FPGA工程项目,FPGA,fpga开发,图像处理,matlab

三、调用xilinx的rom原语实现ROM核,省去ip核的调用
采用rom原语导入初始化mem文件,可省去来回生成ip的繁琐工作,便于代码移植和开发
fpga灰度化,FPGA工程项目,FPGA,fpga开发,图像处理,matlab文章来源地址https://www.toymoban.com/news/detail-688924.html

到了这里,关于基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于opencv的c++图像处理(灰度变换)

    基于opencv的c++接口,实现常用的图像灰度变换方法,包括了线性变换、图像反转、对数变换和伽马变换。 函数 cv::normalize 标准化缩放和移动输入数组元素 当 normType=NORM_MINMAX 时(仅适用于密集数组)。可选掩码指定要规范化的子数组。这意味着在子数组上计算范数或 min-n-ma

    2024年02月04日
    浏览(71)
  • 图像处理之图像灰度化

    图像灰度化 彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万 (255 255 255)的颜色的变化范用。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像(R=G=B),其一个像素点的变化范围为255种,所以在数字图像处理

    2024年02月15日
    浏览(41)
  • OpenCV图像处理-灰度处理

    灰度的线性变换将图像中的所有像素点的值按 线性变换函数 进行变换。 在曝光不足或过度的情况下,图像的灰度值会局限在一个很小的范围内,这时在显示器上看到的将是一个模糊不清、似乎没有层次的图像。 针对这一情况,使用一个线性单值函数对图像内的每一个像素做

    2024年02月08日
    浏览(106)
  • 计算机视觉学习笔记(图像的灰度与灰度级 图像的深度 图像噪声 图像处理)

    如果把白色和黑色之间按对数关系分为若干等级,称为灰度,灰度分为256阶,0为黑色,灰度就是没有色彩,RGB色彩分量全部相等(150,150,150)就代表灰度为150. 一幅图像中不同位置的亮度是不一样的,可用f(x,y)来表示(x,y)上的亮度。由于光是一种能量形式,因此亮度是非负

    2024年02月01日
    浏览(61)
  • 基于FPGA的数字图像处理【1.0】

            最近几年图像处理与机器视觉的发展非常迅速,图像处理领域也被认为是未来几十年最有前途的领域之一。         随着现代图像及视频处理技术的不断发展,人们对图像处理提出了新的要求,图像处理系统的硬件体积越来越小,实时性也越来越好。特别是最

    2024年04月14日
    浏览(39)
  • opencv 图像基础处理_灰度图像

    二值图像表示起来简单方便,但是因为其仅有黑白两种颜色,所表示的图像不够细腻。如果想要表现更多的细节,就需要使用更多的颜色。例如,图 2-3 中的 lena 图像是一幅灰度图像, 它采用了更多的数值以体现不同的颜色,因此该图像的细节信息更丰富。 通常,计算机会将

    2024年02月15日
    浏览(57)
  • 图像处理(二值图、灰度图、彩色图像)

    图像处理之二值图像、灰度图像、RGB图像 1、二值图像 定义:二值图像是值仅仅包含黑色和白色的图像 计算机在处理时,会把黑色像素点处理为0,白色像素点处理1。由于只用一个比特位就能表示,所以称之为二值图像。 2、灰度图 为了表达更丰富的颜色细节,灰度图采用更

    2024年02月06日
    浏览(61)
  • 图像预处理算法————灰度化处理

    图像预处理算法适合在FPGA上完成,原理简单且需要快速处理,通常有灰度化、中值、均值滤波等,以及颜色空间转换算法。 灰度图像是一种特殊的彩色图像(R=G=B的彩色图像) 只有一种颜色分量,单通道的0-255 方法:一般有分量法、最大值法、平均值法、加权平均法四种方

    2024年01月17日
    浏览(51)
  • 基于FPGA的车牌识别,其中包括常规FPGA图像处理算法

    基于FPGA的车牌识别,其中包括常规FPGA图像处理算法:         rgb转yuv,        sobel边缘检测,        腐蚀膨胀,        特征值提取与卷积模板匹配。 有bit流可以直接烧录实验。 保证无错误,完好,2018.3vivado版本,正点达芬奇Pro100t,板卡也可以自己更改移植一下。 所

    2024年04月14日
    浏览(52)
  • matlab数字图像处理——图像的读写,灰度、二值图像

    一、实验目的 1.结合数字图像处理的知识,直观感受图像处理的基本实现过程 2.熟悉MATLAB工具的使用 3.了解图像的读写和显示 二、实验内容 实验内容一:图像读取 (1)利用编程实现读取图像 利用imread读取文件夹images中的图像;查看读取到的图像数据矩阵,对比灰度图像、

    2024年02月07日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包