图像对象及其属性 您所在的位置:网站首页 matlab缩放图像代码 图像对象及其属性

图像对象及其属性

2023-05-27 18:42| 来源: 网络整理| 查看: 265

图像对象及其属性图像 CData

注意

image 和 imagesc 命令可用于创建图像对象。图像对象是坐标区对象的子级,线条、补片、曲面和文本对象也是如此。和所有图形对象一样,您可以设置图像对象的许多属性,从而微调该对象在屏幕上的外观。与图像对象的外观相关的最重要的属性有 CData、CDataMapping、XData 和 YData。这些属性将会在这一部分以及下面的部分中加以讨论。有关图像对象的这些以及所有属性的详细信息,请参阅 image。

图像对象的 CData属性包含了数据数组。在以下命令中,h 是由 image 创建的图像对象的句柄,而且矩阵 X 和 Y 是相同的:

h = image(X); colormap(map) Y = get(h,'CData');

CData 数组的维数控制图像是使用颜色图颜色还是以 RGB 图像的形式显示。如果 CData 数组是二维的,则图像是索引图像或强度图像;在这两种情况下,图像都使用颜色图颜色进行显示。如果另一方面,CData 数组是 m×n×3,则该数组显示为真彩色图像,而忽略颜色图颜色。

图像 CDataMapping

CDataMapping 属性可用于控制图像是 indexed 还是 intensity。要显示索引图像,请将 CDataMapping 属性设置为 'direct',从而使 CData 数组的值直接用作图窗颜色图的索引。当 image 命令与单个输入参数配合使用时,该命令将 CDataMapping 的值设置为 'direct':

h = image(X); colormap(map) get(h,'CDataMapping') ans = direct

通过将 CDataMapping 属性设置为 'scaled' 来显示强度图像。在这种情况下,CData 值经过线性缩放来形成颜色图索引。坐标区的 CLim 属性可用于控制缩放因子。imagesc 函数可创建一个 CDataMapping 属性设置为 'scaled' 的图像对象,而且该函数可调整父坐标区的 CLim 属性。例如:

h = imagesc(I,[0 1]); colormap(map) get(h,'CDataMapping') ans = scaled get(gca,'CLim') ans = [0 1] XData 和 YData

XData 和 YData 属性可用于控制图像的坐标系。对于 m×n 的图像而言,默认的 XData 是 [1 n],而默认的 YData 是 [1 m]。这些设置表明以下内容:

图像左列的 x 坐标为 1。

图像右列的 x 坐标为 n。

图形顶行的 y 坐标为 1。

图像底行的 y 坐标为 m。

图像的坐标系打开实时脚本

使用默认坐标系

使用默认坐标系显示图像。使用 colorcube 图中的颜色。

C = [1 2 3 4; 5 6 7 8; 9 10 11 12]; im = image(C); colormap(colorcube)

指定坐标系

显示图像并指定坐标系。使用 colorcube 图中的颜色。

C = [1 2 3 4; 5 6 7 8; 9 10 11 12]; x = [-1 2]; y = [2 4]; figure image(x,y,C) colormap(colorcube)

在图像数据上添加文本打开实时脚本

此示例说明如何使用数组索引将文本光栅化到现有图像。

使用 text 函数在坐标区中绘制文本。随后,使用 getframe 命令从屏幕上捕获文本并关闭图窗。

fig = figure; t = text(.05,.1,'Mandrill Face','FontSize',20,'FontWeight','bold'); F = getframe(gca,[10 10 200 200]); close(fig)

选择由 getframe 返回所得的 RGB 图像的任意平面。找到黑色像素(黑色是 0)并使用 sub2ind 将它们的下标转换为索引。使用这些下标将文本“刷”到 mandrill MAT 文件所包含的图像中。利用该图像的大小,加上文本的行位置和列位置来确定新图像的位置。对新图像建立索引,取代像素。

c = F.cdata(:,:,1); [i,j] = find(c==0); load mandrill ind = sub2ind(size(X),i,j); X(ind) = uint8(255);

使用 bone 颜色图显示新图像。

imagesc(X) colormap bone

快速更新图像的其他技术

要提高图像对象的 CData 属性的更新速度,则优化 CData 并设置一些相关的图窗和坐标区属性:

尽可能使用最小的数据类型。对图像使用 uint8 数据类型比使用 double 数据类型更快。

设置图像 CData 属性过程包括复制矩阵用于图像。矩阵的总体大小依赖于单个元素的大小。使用更小的单个元素(即更小的数据类型)将会减小矩阵大小,并减少复制矩阵所需的总时间。

使用最小可接受的矩阵。

如果图像显示速度处于最高优先级,那么您可能需要牺牲图像的大小和质量。再次强调,减小尺寸会减少复制矩阵所需的时间。

将坐标区的范围模式属性(XLimMode 和 YLimMode)设置为 manual。

如果它们设置为 auto,则每当有对象(例如图像、线条、补片等)改变了自身的某些数据时,坐标区都必须重新计算相关的属性。例如,如果指定

image(firstimage); set(gca, 'xlimmode','manual',... 'ylimmode','manual',... 'zlimmode','manual',... 'climmode','manual',... 'alimmode','manual');

重绘图像前,坐标区并不重新计算任何一个范围值。

如果您的主要任务只是在屏幕上显示一系列图像,则考虑使用 movie 对象。

MATLAB® movie 对象直接利用基本系统图形资源,而不会执行 MATLAB 对象代码。这比重复设置图像的 CData 属性更快,如上所述。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有