ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

一、fpga图像处理算法整合

2021-02-24 16:00:08  阅读:239  来源: 互联网

标签:3x3 输出 缓存 fpga 矩阵 像素 算法 图像处理 进行


1、RG/GB单通道提取,采用2x2阵列
其实现方法,用ram缓存两行图像数据,对缓存的数据进行间隔4个数据读取,以此一个固定的数据替换其余三个颜色值

2、亮度增加
其公式为:
Q = a * i + b
其中i为输入原像素值,a为调节对比度,b为调节亮度

实现方法为:只需将原像素值加上需要增加亮度的值即可(注:不要溢出)

3、对比度增加
其公式为:
Q = a * i +b
其中i为输入原像素值,a为调节对比度,b为调节亮度

实现方法:只需将原像素值乘上对比度值即可(注:不要溢出)

4、图像反转
其公式为:
Q = 255 - i;
其中i为原像素值

实现方法:将图像值的最大值减去原像素值

5、均值滤波
采用的3x3矩阵,先缓存三行图像数据,在对数据进行相加,取均值
在这里插入图片描述

其除法部分可以转化移位运算:
实现过程:
1024 / 9 = 113;
则可以让其矩阵取和值乘以113,在进行右移10位,则得出需要均值

6、高斯滤波
在这里插入图片描述

实现方法:
对所有的权值乘以1024,在将权值与矩阵像素相乘并累加和,并在按照1024\9=113的原理,让其和乘以113,在对其值进行右移20位,则该值就是要求的最终值

7、图像锐化
图像锐化,采用的是拉普拉斯算子,其算子模板如下:
在这里插入图片描述

采用第二个算子模板,其实现方法如下:
其实现方法:将算子模块中的值分成两部分,一部分是正值,另一部分是负值, 1、在将正值和负值进行比较,如果正值大于负值,则正值减去负值,在与p(4)像素加
2、在将正值和负值进行比较,如果正值小于负值,则负值减去正值,在p(4)像素值减去该值

8、中值滤波
其模型如下:
在这里插入图片描述

其实现方法:
设置9个cnt值做排序标识,让矩阵中的值对另外8个值进行比较,其中标识值为4的,就代表其值为中间值

9、阈值分割
其公式如下:
在这里插入图片描述

设置阀值区间,当在这个阀值区间内,则该像素值转化为0输出,不在这个阀值区间内的像素则输出255或其他定义的值

10、边缘检测(sobel)
其sobel算子3x3模型如下:
在这里插入图片描述

公式部分补充:
得到gxy值后,根据设置的阀值,当大于该阀值,则该像素输出为16’01,否则为8’hff,将像素二值化

其实现过程:
1、将模板Gx分为正值和负值累加,当正值大于负值时,则正值减去负值,否则是负值减去正值
2、同理模板Gy也是如此,然后在得出的值分别进行平方,在进行累加求和
3、最后对该值进行开平方(开平方可用cordic算法转化sqrt,也可以调用ip核)
4、得到开平方的值进行与阀值比较,将像素二值化

11、图像膨胀
在sobel检测之下,其公式:
在这里插入图片描述

求像素的最大值,进行输出
其矩阵模型为3x3
实现方法:
设置9个cnt值做排序标识,让矩阵中的值对另外8个值进行比较,其中标识值为8的,就代表其值为最大值

12、图像腐蚀
在sobel检测之下,其公式为:
在这里插入图片描述

求像素的最大值,进行输出
其矩阵模型为3x3
实现方法:
设置9个cnt值做排序标识,让矩阵中的值对另外8个值进行比较,其中标识值为0的,就代表其值为最小值

13、开运算
其原理过程是先腐蚀后膨胀的过程,其公式:
在这里插入图片描述

其实现过程:
在矩阵3x3中:
1、先进行缓存3行像素点(640)
2、在对3行像素点安顺序各取三个值进行取最小值输出像素
3、将输出最小值的像素在进行缓存3行(640)
4、在对这3行像素点安顺序各取三个值,进行取最大值,输出像素值,则该算法完成

14、闭运算
其原理过程是先膨胀后腐蚀的过程,其公式:
在这里插入图片描述

其实现过程:
在矩阵3x3中:
5、先进行缓存3行像素点(640)
6、在对3行像素点安顺序各取三个值进行取最大值输出像素
7、将输出最大值的像素在进行缓存3行(640)
8、在对这3行像素点安顺序各取三个值,进行取最小值,输出像素值,则该算法完成

15、Tophat 形态学滤波
其公式为:
在这里插入图片描述
矩阵为:3x3
其工作原理是,先对3x3像素矩阵进行开运算,比较值取p(4),当p(4)>=open(p(i))时,则Gxy = p(4) - open(p(i)),否则Gxy = 0 或者其他定义值

16、RAW8转RGB888
选取矩阵:2x2
Cmos像机结构:GB/RG
在这里插入图片描述

以G2为基准点,则该公式为:
在这里插入图片描述

则实现方法:
1、先缓存2行数据(640)
2、各读取2个数据
3、对值进行分配为:
偶数行\偶数列、偶数行\奇数列、奇数行\偶数列、奇数行\奇数列
4、输出各组8位颜色

17、彩色图形进行均值滤波
矩阵:3x3
先将RAW8转RGB888三原色输出,然后在对其每个原色进行缓存3行,在进行取和输出,该和值乘(1024/9)113值,最后将该值进行右移10位,则是最终像素输出

18、Alpha 背景叠加
其效果实现是出现背景半透明状态
公式为:
在这里插入图片描述
19、直方图灰度拉伸算法
矩阵:2x2
在这里插入图片描述

实现方法:
缓存2个小于255的数,为最小值;缓存2个大于0的数为最大值;进行比较,用最大值减去最小值。做为查找表的标号;255/(B-A)部分做成查找表e
最后g(x,y)= e * (f(x,y)-min值)

20、白/晚自动曝光与增益算法

在这里插入图片描述
21、自动白平衡算法
百平衡算法有:灰度世界法、完美反射法、动态阀值法
现实现方法为:灰度世界法
原理:灰度世界法(Gray World)是以灰度世界的假设为基础的,假设一张图片具有大量的色彩变化,R\G\B 三分量的平均值趋于同一个灰度值 K。下面给出 K 的计算方法。
则公式为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实现思路:
1、由于MT9V011摄像机有4个通道,将一帧的图像数据按照奇\偶行\列将4个通道进行分配累加取和
2、在对4个通道的数据进行取平均值,并且要除以4,每个通道的数据占一帧图像的四分之一
3、在将4个通道的数据累加取和,并对其进行取平均值K
4、将4个通道的数据,都进行取倒数的查找表s
5、输出最终值:
R = R(原)ks
G= G(原)ks
B = B(原)ks

标签:3x3,输出,缓存,fpga,矩阵,像素,算法,图像处理,进行
来源: https://blog.csdn.net/qq_39633876/article/details/114024785

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有