本帖最后由 FPGA课程 于 2024-10-16 18:55 编辑
数字图像处理,即用计算机对图像进行处理。他是一门相对年轻的学科。但是在短短的历史中,却以独特的魅 力被各个领域所着迷。由于图像处理的设备价格逐渐降低及其他的因素的推动下,数字图像处理的领域继续成长中。 数字图像处理系统分为三个部件处理图像的计算机,图像数字化仪器,图像显示设备。在其自然的形式下,图像并 不能直接由计算机分析。因为计算机只能处理数字而不是图片,所以一副图像在用计算机进行处理前必须先转化为 数字形式。数字图像就是用一个数字矩阵来表示一个物理图像。物理图像再次被划分称作图像元素(picture eleme nt)的小区域,图像元素简称像素(pixel)。图像被分割成由相邻像素组成的许多水平线,赋予每个像素位置的数值 反应了物理图像上对应点的亮度。 图像转化的过程称为数字化,在每个像素位置,图像的亮度被采样和量化,从而得到图像对应点的亮暗程度的 一个整数值,每个像素具有位置和灰度两个属性 以下图一串对应图像组成的链表明图像处理的整个过程 1matlab简介
Matlab(matrix laboratoty)是目前国际上使用的科学与工程计算机软件。现在已经发展为集数值运算、符号运算、 数据可视化、图形界面设计、程序设计、仿真等功能于一体的集成软件。
Matlab 2018a 的界面,在默认情况操作界面包含命令窗口和工作区历史命令窗口三个。Matlab 的主界面是一个 高度集成的工作环境,有 4 个不同的窗口。分别为 command window(命令窗口)、command history(历史命令窗 口)、current folder(当前目录窗口)和 word space(工作区)。 Matlab 支持的五种图像类型二值图像、索引图像、灰度图像、RGB 图像和多帧图像阵列。判断图像类型及转 化的函数有: l isbw:若图像为二值图像,则返回真。 l isgray:若图像为灰度图像,则返回真。 l isind:若图像为索引图像,则返回真。 l isrgb:若图像为 RGB 图像,则返回真。 图像类型转化 l dither:用抖动法(dithering)转换图像。该函数通过颜色抖动(颜色抖动即改变边沿像素的颜色,使像素 周围的颜色近似于原始图像的颜色,从而以空间分辨率来换取颜色分辨率)来增强输出图像的颜色分辨率。 该函数可以把 RGB 图像转换成索引图像或把灰度图像转换成二值图像。 l gray2ind:灰度图像或二值图像向索引图像转换。 l grayslice:设定阈值将灰度图像转换为索引图像。 l im2bw:设定阈值将灰度、索引、RGB 图像转换为二值图像。 l im2double:将图像数组转换为 double 型。 l im2uint8:将图像数组转换为 uint8 型。 l im2uint16:将图像数组转换为 uint16 型。该函数不支持二值图像序列的转换。 l ind2gray:索引图像向灰度图像转换。 l ind2rgb:索引图像向 RGB 图像转换。 l mat2gray:将一个数据矩阵转换为灰度图像。 l rgb2gray:RGB 图像向灰度图像转换或将彩色色图转换成灰度色图。 l rgb2ind:RGB 图像向索引图像转换。包含三种不同方法:均衡量化、最小值量化、色图映射。 l im2java:一般图像向 Java 图像转换。 l label2rgb:标志图像向 RGB 图像转换。
1.1图像的显示函数
显示图像的最基本的手段是使用 image 函数。该函数还产生了图像对象的句柄,并允许对对象的属性进行设置。 此外,imagesc 函数也具有 image 的功能,所不同的是 imagesc 函数还自动将输入数据比例化,以全色图的方式显示。 imshow 函数比 image 和imagesc 更常用,它能自动设置句柄图像的各种属性。imshow 可用于显示各类图像。 对于每类图像,调用方法如下: l imshow filename :显示图像文件。 l imshow(BW) :显示二值图像,BW 为黑白二值图像矩阵。 l imshow(X,map):显示索引图像,X 为索引图像矩阵,map 为色彩图示。 l imshow(I):显示灰度图像,I 为二值图像矩阵。 l imshow(RGB):显示 RGB 图像,RGB 为 RGB 图像矩阵。 l imshow(I,[low high]):将非图像数据显示为图像,这需要考虑数据是否超出了所显示类型的最大允许范围, 其中[low high]用于定义待显示数据的范围。
1.2图像格式的区别以及应用
1.jpg 格式 全名应该是 JPEG。JPEG 图片以 24 位颜色存储单个光栅图像。JPEG 是与平台无关的格式,支持最高级别的 压缩,不过,这种压缩是有损耗的。渐近式 JPEG 文件支持交错。可以提高或降低 JPEG 文件压缩的级别。但是, 文件大小是以图像质量为代价的。压缩比率可以高达 100:1。(JPEG 格式可在 10:1 到 20:1 的比率下轻松地压缩 文件,而图片质量不会下降。)JPEG 压缩可以很好地处理写实摄影作品。但是, 对于颜色较少、对比级别强烈、 实心边框或纯色区域大的较简单的作品,JPEG 压缩无法提供理想的结果。有时,压缩比率会低到 5:1,严重损失了 图片完整性。这一损失产生的原因是,JPEG 压缩方案可以很好地压缩类似的色调,但是 JPEG 压缩方案不能很好 地处理亮度的强烈差异或处理纯色区域。 Jpeg 格式特点: 1、透明性:它不支持透明性 2、动画:它不支持动画 3、损耗性:除了一些比如说(仅仅是 90 、180、270 度旋转),裁切,从标准类型到先进类型,编辑图片的原 数据之外,所有其它操作对jpeg 图像的处理都会使得它的质量损失,所以我们在编辑过程一般用 png 作为过渡格式。 4、隔行渐进显示,它支持隔行渐进显示(但是 ie 浏览器并不支持这个属性,但是 ie 会在整个图像信息完全达 到的时候显示)。 由上可以看出 Jpeg 是最适 web 上面的摄影图片和数字照相机中。根据惊叹我们在页面中使用的商品图片、采 用人像或者好、实物素材制作的广告更适合采用 JPG 格式保存。 2. gif格式 GIF(GraphicsInterchange Format)的原义是“图像互换格式”,是 CompuServe 公司在 1987 年开发的图像文件格式。 GIF 文件的数据,是一种基于 LZW 算法的连续色调的无损压缩格式。其压缩率一般在 50%左右,它不属于任何应 用程序。目前几乎所有相关软件都支持它,公共领域有大量的软件在使用 GIF 图像文件。GIF 图像文件的数据是经 过压缩的,而且是采用了可变长度等压缩算法。所以 GIF 的图像深度从 lbit 到 8bit,也即 GIF 最多支持 256 种色彩
的图像。GIF 格式的另一个特点是其在一个 GIF 文件中可以存多幅彩色图像,如果把存于一个文件中的多幅图像数 据逐幅读出并显示到屏幕上,就可构成一种最简单的动画。 gif 格式特点: 1、透明性:gif 是一种布尔透明类型,即它可以使全透明,也可是全不透明,但是它并没有半透明的( alpha 透明)。 2、动画:gif 格式支持动画。 3 、无损耗性:gif 是一种无损耗的图像格式,这也意味着你可以对 gif 图片做任何操作也不会使得图像质量产 生损耗。 4、水平扫描:gif 是使用一种叫做 LZW 的算法进行压缩的,当压缩 gif的过程中,像素是由上到下水平压缩的, 这也意味着同等条件下,横向的 gif 图片比竖向的 gif 更加小。例如 500*10 的图片比 10*500 的图片更加小。 5、间隔渐进显示:gif 支持可选择性的间隔渐进显示。 由以上特点看出只有 256 种颜色的 gif 图片不适合照片,但它适合对颜色要求不高的图形(比如说图标、图表 等)。 3. png格式 PNG 是 20 世纪 90 年代中期开始开发的图像文件存储格式,其目的是企图替代 GIF 和 TIFF 文件格式,同时增 加一些 GIF 文件格式所不具备的特性。流式网络图形格式(Portable Network Graphic Format ,PNG)名称来源于非官 方的“PNG’s NotGIF”,是一种位图文件(bitmapfile)存储格式,读成“ping” 。PNG 用来存储灰度图像时,灰度图像的 深度可多到 16 位,存储彩色图像时,彩色图像的深度可多到 48 位,并且还可存储多到 16 位的 α 通道数据。PNG 使用从 LZ77 派生的无损数据压缩算法。 Png 格式特点: 1、类型:Png 这种图片格式包括了许多类,但是在实践的大致中可以分为 256 色的 png 和全色的 png,你完全 可以用 256 色的 png 代替 gif,用全色的 png 代替jpeg。 2 、透明性:png 是完全支持 alpha 透明的(透明、半透明、不透明),尽管有两个怪异的现象在 ie6(下面详 细讨论) 3、动画: 它不支持动画 Png8 的在 ie 中的怪异表现,半透明的 png8 在 ie6 以下的浏览器显示为全透明。alpha 透 明的全色 PNG(png32)在 ie6 中会出现背景颜色(通常是灰色) 上面可以总结:全透明的 png8 可以在任一浏览器正常显示(就像 gif一样)。半透明的 png8 在除了ie6 及其一 下的浏览器下错误的显示成全透明,其它的浏览器都能正常显示半透明。图像上颜色较少、并且主要以纯色或者平 滑的渐变色填充以及具备较大的亮度差异的图像适合以 png8 格式存储。 4.svg格式 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式。 它由万维网联盟制定,是一个开放标准。 SVG 格式特点: 1 、SVG 指可伸缩矢量图形 (Scalable Vector Graphics) 2 、SVG 用来定义用于网络的基于矢量的图形 3 、SVG 使用 XML 格式定义图形 4 、SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失 5 、SVG 是万维网联盟的标准 6 、SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体 SVG 跟上面这些图片格式最大的不同,是 SVG 是矢量图。这意味着 SVG 图片由直线和曲线以及绘制它们的方 法组成。当你放大一个 SVG 图片的时候,你看到的还是线和曲线,而不会出现像素点。这意味着 SVG 图片在放大 时,不会失真,所以它非常适合用来绘制企业 Logo、Icon 等。
5. bmp格式 BMP 是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外, 不采用其他任何压缩,因此,BMP 文件所占用的空间很大。BMP 文件的图像深度可选 lbit、4bit、8bit 及 24bit。BMP 文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。 这是一种比较老的图片格式。BMP 是无损的,但同时这种图片格式几乎没有对数据进行压缩,所以 BMP 格式 的图片通常具有较大的文件大小。虽然同时支持索引色和直接色是一个优点,但是太大的文件格式格式导致它几乎 没有用武之地,现在除了在 Windows 操作系统中还比较常见之外,我们几乎看不到它。 6. WebP 格式 WebP 是谷歌开发的一种新图片格式,WebP 是同时支持有损和无损压缩的、使用直接色的、点阵图。 想象 Web 上的图片之多,百分之几十的提升,是非常非常大的优化。只可惜,目前只有 Chrome 浏览器和 Opera 浏览器支持 WebP 格式,所以 WebP 的应用并不广泛。为了使用更先进的技术,比如 WebP 图片格式,来压缩互联 网上传输的数据流量,谷歌甚至提供了 Chrome Data Compression Proxy,设置了 Chrome Data Compression Proxy 作 为 Web 代理之后,你访问的所有网站中的图片,在经过 Proxy 的时候,都会被转换成 WebP 格式,以降低图片文件 的大小。从名字就可以看出来它是为 Web 而生的,什么叫为 Web 而生呢?就是说相同质量的图片,WebP 具有更小 的文件体积。现在网站上充满了大量的图片,如果能够降低每一个图片的文件大小,那么将大大减少浏览器和服务 器之间的数据传输量,进而降低访问延迟,提升访问体验。
2Matlab与 Modelsim联合仿真
从事 FPGA 的都会使用 Modelsim 软件,用于工程仿真,对于图像的应用,在 Verilog 代码里需要通过读取文本 的形式来处理图像。 仿真完成后可以将图像数据存储到文本中: Verilog 语言 $readmemh,以 16 进制的数据读取返回到 image。 $fopen 读取文件 $fdisplay 显示 那么如何得到图像的文本数据呢?这就需要借用Matlab 来实现了: 彩色图片转为 8bit 的 hex 文本 彩色图片转为 24bit 的 hex 文本:
txt 文本中 hex 数据还原为图片:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml10932/wps8.jpg
3 操作步骤
按照平台介绍的方法,进行具体的步骤操作: 第一步:Matlab_src 文件夹下打开例程的 xxxxxxxx.m 文件。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml10932/wps9.png 第二步:单击菜单栏的运行。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml10932/wps10.png 稍等一下就会产生文本文件:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml10932/wps11.png 第三步:双击打开 sim 文件夹下的 sim.bat,此时 Modelsim 会自动运行。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml10932/wps12.png 第四步:回到 matlab 文件夹下,查看生成的文本文件 image_480_640 3 out.txt 然后回到 matlab 界面下,运行 rgb_image_sim_pass_show.m
file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml10932/wps13.png
4 使用Matlab生成 coe文件和仿真文件
4.1 输出 coe文件
coe 文件是xilinx 的 ROM 或 RAM 初始化的标准格式文件,本节介绍如何使用matlab 来生成该文件,以备上板 工程初始化使用。 fprintf(fid,'memory_initialization_radix = 16;\n'); fprintf(fid,'memory_initialization_vector =\n'); 上面两句为表示格式化的头部,进行数据类型的说明。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml10932/wps14.png 4.2 输出 sim文件
这里的 sim 文件指可以在 modelsim 里用于仿真的 rom 文件,其功能就是按地址查找数据。代码如下:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml10932/wps15.png
|