Matlabwilliam hill官网
直播中

张未羊

9年用户 286经验值
擅长:电源/新能源
私信 关注
[讨论]

MATLAB的数字图像处理

`matlab语言简洁,可读性强,工具箱涉及的专业领域广泛且功能强大。图像工具箱几乎包括所有经典的图像处理方法,尤其在图像处理技术中使用MATLAB语言可以快速实现模拟仿真,大大提高实验效率





本教程介绍如何使用Vision HDL Toolbox™对象设计以硬件为目标的图像过滤器。

MATLAB®中以硬件为目标的视频处理模型的主要特点是:

  • 流式像素界面:Vision HDL Toolbox中的系统对象使用流式像素界面。串行处理对于硬件设计是有效的,因为存储像素数据需要较少的存储器。串行接口使对象能够独立于图像大小和格式运行,并使设计对视频定时错误更具弹性。有关详细信息,请参阅docid:visionhdl_ug.budgsr5-1。
  • 用于HDL代码生成的功能:将数据转换为像素流后,您可以通过从Vision HDL Toolbox库中选择系统对象来设计硬件模型。针对HDL代码生成的设计部分必须在单独的功能中。
  • 转换为基于帧的视频:为了验证,您可以显示基于帧的视频,或者您可以将硬件兼容设计的结果与基于MATLAB帧的行为模型的输出进行比较。Vision HDL Toolbox提供System object™,使您可以反序列化设计的输出。

内容
  • 导入数据
  • 序列化数据
  • 设计HDL兼容型号
  • 反序列化过滤的像素流
  • 显示结果
  • 与行为模型比较
  • HDL代码生成

导入数据
将图像文件读入工作区。此样本图像包含256×256像素。每个像素是表示强度的单个uint8值。要在测试时降低模拟速度,请选择图像的缩略图部分。

使用MATLAB解释语言模拟串行视频可能非常耗时。一旦您使用较小的图像大小调试设计,请使用MEX代码生成来加速使用较大图像进行测试。请参阅docid:visionhdl_examples.example-ex64676005。
origIm = imread('rice.png');origImSize = size(origIm)imActivePixels = 64;imActiveLines = 48;inputIm = origIm(1:imActiveLines,1:imActivePixels);数字imshow(inputIm,'InitialMagnification',300)标题'输入图像'
origImSize =   256 256


序列化数据

的文档ID:visionhdl_ref.bumli6o-1系统对象转换成帧的视频到一个象素流和控制结构。此对象为目标为HDL代码生成的函数提供输入,但它本身不支持HDL代码生成。

要使用标准视频格式进行模拟,请选择预定义的视频填充格式以匹配您的输入源。要使用自定义尺寸的图像进行模拟,请选择要包围图像的非活动区域的尺寸。本教程使用自定义图像。visionhdl.FrameToPixels对象的属性对应于图中的尺寸。



创建visionhdl.FrameToPixels对象并设置图像属性。图像是一个强度图像,其标量值代表每个像素,因此将NumComponents属性设置为1.本教程用缩略图图像填充上下 5条非活动行,以及每行前后10个非活动像素。

使用docid:visionhdl_ref.buuame6函数从序列化程序对象中获取有用的图像尺寸。此语法会丢弃前两个返回值,并仅保留填充帧中的总像素数。调用对象将图像转换为像素矢量和控制信号矢量。

注意:此语法仅在R2016b或更高版本中运行。如果您使用的是早期版本,请使用等效的步骤语法替换对象的每个调用。例如,将myObject(x)替换为step(myObject,x)。
frm2pix = visionhdl.FrameToPixels(...          'NumComponents',1,...          'VideoFormat','custom',...          'ActivePixelsPerLine',imActivePixels,...          'ActiveVideoLines',imActiveLines,...          'TotalPixelsPerLine',imActivePixels + 20,......          'TotalVideoLines',imActiveLines + 10,......          'StartingActiveLine',6,......          'FrontPorch',10);[〜,〜,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);[pixel,ctrl] = frm2pix(inputIm);
设计HDL兼容型号

从visionhdl库中选择一个图像处理对象。本教程使用docid:visionhdl_ref.bt42xpl。

构造一个包含此对象的持久实例的函数。该函数通过对对象执行一次调用来处理单个像素。

对象的ctrlIn和ctrlOut参数是包含五个控制信号的结构。信号指示每个像素的有效性以及帧中每个像素的位置。

设置visionhdl.ImageFilter的滤镜系数以执行2×2模糊操作。

对于本教程,您无需更改过滤器对象的LineBufferSize属性。此参数不会影响模拟速度,因此在使用小测试图像进​​行模拟时无需进行修改。选择LineBufferSize时,请选择2的幂,以适应所需最大帧格式的活动行大小。默认值2048适用于1080p视频格式。
function [pixOut,ctrlOut] = HDLTargetedDesign(pixIn,ctrlIn)  持久性 filt2d   如果 isempty(filt2d)      filt2d = visionhdl.ImageFilter(...           '系数',一(2,2)/ 4,...           'CoefficientsDataType' ,'自定义',...           'CustomCoefficientsDataType',numerictype(0,1,2), 。..           'PaddingMethod','Symmetric');  结束      [pixOut,ctrlOut] = filt2d(pixIn,ctrlIn);结束

预分配输出向量以进行更有效的模拟。然后,对填充帧中的每个像素调用该函数一次,该像素由像素矢量表示。
pixelOut = 0(numPixelsPerFrame,1,'uint8');ctrlOut = repmat(pixelcontrolstruct,numPixelsPerFrame,1); 对于 p = 1:numPixelsPerFrame    [pixelOut(p),ctrlOut(p)] = HDLTargetedDesign(pixel(p),ctrl(p)); 结束
反序列化过滤的像素流

的文档ID:visionhdl_ref.bumqceg-1系统对象转换的像素流以基于帧的视频。使用此对象反序列化来自visionhdl.ImageFilter的过滤数据。设置图像尺寸属性以匹配测试图像。调用对象将HDL目标函数的输出转换为矩阵。
pix2frm = visionhdl.PixelsToFrame(...          'NumComponents',1,...          'VideoFormat','custom',...          'ActivePixelsPerLine',imActivePixels,...          'ActiveVideoLines',imActiveLines);[outputIm,validIm] = pix2frm(pixelOut,ctrlOut);
显示结果

使用imshow函数显示操作结果。
if validIm    数字    imshow(outputIm,'InitialMagnification',300)    标题'输出图像' 结束


与行为模型比较

如果您有设计的行为模型,则可以在视觉上或数学上比较输出帧。对于过滤,您可以将visionhdl.ImageFilter与Image Processing Toolbox™中的docid:images_ref.btsmcj2-1函数进行比较。该imfilter函数的帧作为基质上操作,并且返回一个修改的帧作为基质。您可以将此矩阵与pix2frm对象的矩阵输出进行比较。

为避免依赖于Image Processing Toolbox许可证,本教程不执行比较。
HDL代码生成

一旦您的设计在仿真中工作,使用HDL Coder™为HDLTargetedDesign功能生成HDL代码。

` 张老师大神

回帖(36)

猎国倾城

2016-12-1 19:05:09
举报

王栋春

2016-12-1 21:13:27
楼主再来些详细的资料呀
举报

刘航

2016-12-6 15:45:54
不知道能不能看见
举报

张未羊

2016-12-7 09:51:49
引用: 刘雨航 发表于 2016-12-6 15:45
不知道能不能看见

想看见什么?111111!!!!11
举报

就是想你

2016-12-8 23:17:35
看看,有没有用
举报

老是喂鱼

2017-3-23 14:02:20
zzzzzzzzzzzzzzzzzzzzzzz
举报

熊志航

2017-3-23 16:30:38
谢谢分享,感动,楼主一生平安
举报

h1654155867.8295

2017-3-24 19:05:48
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

liuzhiqiang

2017-3-25 10:53:16
看看
举报

陈玥

2017-3-27 11:48:25
好资料,谢谢分享
举报

信仰林俊杰

2017-3-29 11:14:15
看不到?
举报

信仰林俊杰

2017-3-29 11:15:33
xx
举报

追风战警111

2017-4-10 22:02:11
最近刚借来冈萨雷斯的宝典准备学习
举报

张朋

2017-4-10 22:38:49
多谢楼主              
举报

12351236

2017-4-11 11:27:09
学习新知识,想要楼主的帮助啊
举报

红火恍惚

2017-4-20 19:01:27
怎么不发教程呢,我正在学习图像处理
举报

viprrrr

2017-4-23 17:40:16
学习学习
举报

viprrrr

2017-5-5 20:35:33
学习一下
举报

rskbutou

2017-6-19 13:05:09
支持分享!点赞!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分