32.1加载和保存图像

大多数图像处理任务的第一步是将图像加载到Octave中,这是用imread作用这个imwrite函数是将图像写入磁盘的相应函数。

总之,大多数图像处理代码都将遵循此代码的结构体

I = imread ("my_input_image.img");
J = process_my_image (I);
imwrite (J, "my_output_image.img");
 
: [img, map, alpha] = imread (filename)
: […] = imread (url)
: […] = imread (…, ext)
: […] = imread (…, idx)
: […] = imread (…, param1, value1, …)

读取各种文件格式的图像。

从文件中以矩阵形式读取图像filename或来自在线资源url。如果两者都没有给出,但是ext已指定,正在查找扩展名为的文件ext.

输出的大小和类别取决于图像的格式。彩色图像以MxNx3矩阵的形式返回。灰度和黑白图像的大小为MxN。多页图像将具有额外的第4个维度。

图像的位深度决定了输出的类别:"uint8", "uint16""single"对于灰度和颜色,以及"logical"用于黑白。请注意,索引图像总是返回颜色map的索引,而与是否map是指定的输出。要获得实际的RGB图像,请使用ind2rgb当正在读取一个以上的索引图像时,map是从第一个中获得的。在极少数情况下,这可能是不正确的,并且imfinfo可以用来获得每个图像的颜色图。

有关表示图像的更多信息,详见Octave手册。详见表示图像)

某些文件格式,如TIFF和GIF,能够在一个文件中存储多个图像。idx可以是指定要读取的图像索引的标量或向量。默认情况下,Octave将只读取第一页。

根据文件格式的不同,可以使用配置图像的读取parameter, value对。支持以下参数:

"Frames" or "Index"

这是另一种指定方法idx。以这种方式指定itin时,其值也可以是字符串"all".

"Info"

此参数存在于MATLAB兼容性,但没有效果。从单个文件读取多个图像时的最大性能,请使用"Index"参数

广告
"PixelRegion"

控制读取的图像区域。该值必须是一个包含两个3个元素的数组的元胞数组{[rows], [cols]}数组中的元素是要读取的开始像素、增量像素和结束像素。如果忽略增量值,则默认为1。例如,以下内容都是等效的:

imread (filename, "PixelRegion", {[200 600], [300 700]});
imread (filename, "PixelRegion", {[200 1 600], [300 1 700]});
imread (filename)(200:600, 300:700);
广告

详见: imwrite, imfinfo, imformats.

广告
 
: imwrite (img, filename)
: imwrite (img, filename, ext)
: imwrite (img, map, filename)
: imwrite (…, param1, val1, …)

以各种文件格式写入图像。

图像img可以是二进制、灰度、RGB或多维图像。的大小和级别img应该与阅读时预期的内容相同imread:第3和第4维度分别用于颜色空间和多个页面。如果是索引图像,颜色图map还必须指定。

如果ext的文件扩展名filename用于确定格式。实际支持的格式是在Octave的构建过程中所做的依赖参数。使用imformats以检查对不同图像格式的支持。

根据文件格式的不同,可以使用配置图像的写入param, val对。支持以下参数:

Alpha

图像的Alpha(透明度)通道。这必须是一个具有相同类、行数和列数的矩阵img在第二页图像的情况下,第四维度的大小也必须匹配,并且第三维度必须是单体。默认情况下,图像将完全不透明。

广告
Compression

压缩以使用一个图像。可以是以下其中之一:“none”(默认值)、“bzip”、“fax3”、“fax4”、《jpeg》、“lzw”、“rle”或“deflate”。请注意,并非所有压缩类型都可用于默认为Magick库的所有图像格式。

广告
DelayTime

对于接受动画的格式(如GIF),控制帧移动到下一帧之前的显示时间。该值必须是标量(将应用于中的所有帧img),或长度等于中帧数的向量im。该值以秒为单位,必须介于0和655.35之间,默认值为0.5。

广告
DisposalMethod

对于接受动画的格式(如GIF),控制在绘制下一帧之前一帧的内容。其值可以是以下字符串之一:“doNotSpecify”(默认值);“leaveInPlace”;“restoreBG”;和“restorePrevious”,或长度等于中帧数的字符串的元胞数组img.

广告
LoopCount

对于接受动画的格式(如GIF),控制序列重复的次数。值Inf表示无限循环(默认值),值0或1表示序列只播放一次(循环0次),而值2或以上表示循环该次数(循环2次表示完整序列播放3次)。当文件写入结束时只有一个图像时,此参数将被忽略。

广告
Quality

设置压缩质量。该值应为0和100之间的整数,较大的值表示较高的视觉质量和较低的压缩。默认值为75。

广告
WriteMode

某些文件格式,如TIFF和GIF,能够在一个文件中存储多个图像。此参数指定如果img应附加到文件(如果存在),或者是否应为其创建新文件(可能覆盖现有文件)。值应该是字符串"Overwrite"(默认),或"Append".

尽管有这个参数,但写多页图像最有效的方法是通过4维imgimwrite,使用时可以预期的相同矩阵imread带有参数"Index"设置为"all".

广告

详见: imread, imfinfo, imformats.

广告
 
: val = IMAGE_PATH ()
: old_val = IMAGE_PATH (new_val)
: old_val = IMAGE_PATH (new_val, "local")

查询或设置内部变量,该变量指定要在其中搜索图像文件的目录的冒号分隔列表。

当从具有的函数内部调用时"local"参数,则该变量会为函数及其调用的任何子程序在本地进行更改。退出函数时将恢复原始变量值。

详见: EXEC_PATH, OCTAVE_HOME, OCTAVE_EXEC_HOME.

广告

可以获得磁盘上图像文件的信息,而无需实际将其读入Octave。这是使用imfinfo函数,它提供对存储在图像文件头中的许多参数的读取访问。

 
: info = imfinfo (filename)
: info = imfinfo (url)
: info = imfinfo (…, ext)

从文件中读取图像信息。

imfinfo返回一个结构体,该结构体包含有关存储在文件中的图像的信息filename。如果没有文件filenameext已指定,它将查找名为的文件filename和扩展ext,即一个名为filename.ext.

输出结构体info包含以下字段:

Filename

图像文件的全名。

广告
FileModDate

上次修改文件的日期。

广告
FileSize

磁盘上映像的字节数

广告
Format

图像格式(例如。,"jpeg").

广告
Height

图像高度(以像素为单位)。

广告
Width

图像宽度(以像素为单位)。

广告
BitDepth

每个通道每个像素的位数。

广告
ColorType

图像类型。值为"grayscale", "indexed","truecolor", "CMYK""undefined".

广告
XResolution

图像的X分辨率。

广告
YResolution

图像的Y分辨率。

广告
ResolutionUnit

图像分辨率的单位。值为"Inch","Centimeter""undefined".

广告
DelayTime

以1/100秒为单位的时间(0到65535),在显示动画序列中的下一个图像之前必须过期。

广告
LoopCount

循环动画的迭代次数。

广告
ByteOrder

支持它的格式的Endian参数。值为"little-endian", "big-endian""undefined".

广告
Gamma

图像的Gamma级别。从于显示监视器的差异,显示在两个不同工作站上的相同颜色的图像可能看起来不同。

广告
Quality

JPEG/MIFF/PNG压缩级别。值是一个范围为[0 100]的整数。

广告
DisposalMethod

仅对GIF图像有效,控制创建GIF动画时连续帧的渲染方式(前一帧的处理方式)。值扫描为"doNotSpecify", "leaveInPlace", "restoreBG""restorePrevious"。对于非GIF文件,值为空字符串。

广告
Chromaticities

Value是一个1x8矩阵,其中白色、红色、绿色和蓝色点的x、y色度值按顺序排列。

广告
Comment

图片注释。

广告
Compression

压缩类型。值可以是"none", "bzip","fax3", "fax4", "jpeg", "lzw","rle", "deflate", "lzma", "jpeg2000","jbig2", "jbig2""undefined".

广告
Colormap

每个图像的颜色map。

广告
Orientation

图像相对于行和列的方向。Value是TIFF 6规范中定义的介于1和8之间的整数,对于MATLAB兼容性。

广告
Software

用于生成图像的相机或图像输入设备的软件或固件的名称和版本。

广告
Make

录音设备的制造商。这是一家生产DCS、扫描仪、视频数字化仪或其他生成图像的设备的公司。

广告
Model

现场提到的记录设备的型号名称或型号"Make".

广告
DateTime

Exif标准定义的图像创建日期和时间,即文件更改的日期和时间。

广告
ImageDescription

Exif标准定义的图像标题。

广告
Artist

相机所有者、摄影师或图像创建者的姓名。

广告
Copyright

声称对图像拥有权利的个人或组织的版权声明。

广告
DigitalCamera

具有从Exif符号检索到的信息的结构体。

广告
GPSInfo

具有从Exif符号检索到的地理符号信息的结构体。

广告

详见: imread, imwrite, imshow, imformats.

广告

默认情况下,Octave的图像IO函数(imread, imwriteimfinfo)使用GraphicsMagick依赖库的运作。这意味着支持大量的图像格式,但考虑到科学中的大量图像格式及其普遍的封闭性,不可能有一个能够阅读所有图像格式的依赖库。正因为如此,函数imformats保存一个可用格式、其扩展以及映像IO函数应使用的函数的可配置列表。这允许通过创建针对特定文件格式的函数来扩展Octave的图像IO函数。

虽然可以直接调用额外的函数,但使用正确配置Octaveimformats允许保留从文件格式中抽象出来的一致代码。

需要注意的是,文件格式实际上并不是从其文件扩展名定义的GraphicsMagick能够读取和写入比所列文件格式更多的文件格式imformats。这意味着,即使扩展名不正确或丢失,图像也可能被正确读取,即使是未列出的格式也不一定支持。

 
: imformats ()
: formats = imformats (ext)
: formats = imformats (format)
: formats = imformats ("add", format)
: formats = imformats ("remove", ext)
: formats = imformats ("update", ext, format)
: formats = imformats ("factory")

管理支持的图像格式。

formats是一个结构体,包含有关每个支持的文件格式或特定格式的信息ext,字段上显示的值ext。它包含以下字段:

ext

文件格式的名称。这可能与文件扩展名匹配,但Octave会自动检测文件格式。

广告
description

文件格式的详细说明。

广告
isa

用于确认文件是否为指定格式的函数句柄。

广告
write

如果文件为指定格式,则用于写入的函数句柄。

广告
read

用于打开指定格式文件的函数句柄。

广告
info

用于获取指定格式的图像信息的函数句柄。

广告
alpha

如果格式支持alpha通道(透明或无光),则为逻辑值。

广告
multipage

如果格式支持多页(每个文件多个图像),则为逻辑值。

广告

可以使用参数更改Octave管理文件格式的方式"add", "remove""update",并提供一个结构体format带有必填字段。参数"factory"将配置重置为默认值。

Octave软件包可以通过使用PKG_ADD和PKG_DEL命令来扩展图像读取函数Octave。

详见: imfinfo, imread, imwrite.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2