设计流程如下:
mif文件的制作→ 调用ip核生成rom以及仿真注意问题→ 灰度处理→ 均值滤波:重点是3*3 像素阵列的生成→ sobel边缘检测→ 图片的显示→ 结果展示 。
一、mif文件的制作
受资源限制,将图片像素定为 160 * 120,将图片数据制成 mif 文件,对 rom ip 核进行初始化。mif文件的制作方法网上有好多办法,因此就不再叙述了,重点说mif文件的格式。
mif文件的格式为:
WIDTH=16 ; //数据位宽
DEPTH=19200 ; // rom 深度即图片像素点的个数
ADDRESS_RADIX=UNS ; //地址数据格式
DATA_RADIX=BIN ; //数据格式
CONTENT
BEGIN
0:1010110011010000 ; // 地址 :数据 ;注意格式要和上面定义的保持统一
1:1010110011010000 ;
2:1010010010110000 ;
......
19198:1110011011111001 ;
19199:1110011011011000 ;
END;
二、ip 核生成 rom 及仿真时需要注意的问题
ip 核生成 rom
1、Tools -> MegaWizard Plug-In Manager
2、Create a new custom megafuction variation
3、Memory Compier -> ROM -> Verilog HDL -> 自定义名称
仿真注意问题:
1、仿真时要注意是否有 altera_mf 库文件,否则会报错。
Module 'altsyncram' is not define
解决方案:
(1).下载 altera_mf 库文件;
(2). 仿真时将 altera_mf.v 与其他文件一起加入到 project 中。
2、要将 .mif 文件放在仿真工程目录下,即与 .mpf 文件在一起,否则将不会有数据输出。
三、灰度处理
任何颜色都由红、绿、蓝三原色组成,假如原来某点的颜色为( R,G,B )那么,我们可以通过下面几种方法,将其转换为灰度:
浮点算法:Gray=0.299R+0.587G+0.114B
平均值法:Gray=(R+G+B)/3;
仅取单色(如绿色):Gray=G;
将计算出来的Gray值同时赋值给 RGB 三个通道即RGB为(Gray,Gray,Gray),此时显示的就是灰度图。通过观察调色板就能看明了。 通过观察可知,当RGB三个通道的值相同时即为灰色,Gray的值越大,颜色越接近白色,反之越接近黑色(这是我自己的理解,不严谨错误之处请大神指正)。
这是在线调色板网址,可以进去自己研究一下。
站长工具颜色代码查询、RGB颜色值: