1.change_format(Image : ImagePart : Width, Height : )
change_format将输入图像的大小分别增加或减少到指定的高度或宽度。
如果图像被缩小,则在图像的“右”或“下”边缘分别切断。
如果将图像放大,则将放大的区域灰度值设置为0。
新图像的定义域等于输入图像的域。不进行缩放。
例程
read_image (Image, 'printer_chip/printer_chip_01')
get_image_size (Image, Width, Height)
change_format (Image, ImagePart, Width+100, Height+100)
get_domain (ImagePart, Domain)
ImagePart的Domain与Image的作用域相同。
2.crop_domain(Image : ImagePart : : )
crop_domain从输入图像中切出一个矩形区域。
这个矩形是输入图像定义域的最小外接矩形。
新的图像矩阵具有矩形的大小。
例程
read_image (Image, 'printer_chip/printer_chip_01')
gen_circle (Circle, 200, 200, 100.5)
reduce_domain (Image, Circle, ImageReduced)
crop_domain (ImageReduced, ImagePart)
get_image_size (ImagePart, Width, Height)
get_domain (ImagePart, Domain)
Width, Height为Circle的最小外接圆大小,Domain为Circle区域。
3.crop_domain_rel(Image : ImagePart : Top, Left, Bottom, Right : )
crop_domain_rel从输入图像中切出一个矩形区域。
该区域由输入图像定义域的外接矩形决定。
矩形由参数Top, Left, Bottom, Right设置。
Top顶部剪切的行数,Left左侧剪切的列数。。。。
正值导致较小的值,负值导致较大的值。
如果所有参数都设置为零,则区域保持不变。
例程
read_image (Image, 'printer_chip/printer_chip_01')
crop_domain_rel (Image, ImagePart,0, 0, 1000,1000)
4.crop_part(Image : ImagePart : Row, Column, Width, Height : )
crop_part从每个输入图像中切割一个或多个矩形区域。
区域由矩形表示,矩形由左上角的坐标和大小定义。
矩形的左上角必须在图像中。
在右侧和底部,矩形可以超过图像,但是设置了输出图像的域,
因此只包含可以从输入图像派生的部分。
如果矩形区域完全落在图像中,那么每个生成的图像都具有对应矩形的大小。
例程
read_image (Image, 'printer_chip/printer_chip_01')
crop_part (Image, ImagePart, 0, 0, 500, 500)
get_image_size (ImagePart, Width, Height)
从图像Image中,剪切出0,0,0+500,0+500范围的区域。
Width, Height为500-0,500-0;
5.crop_rectangle1(Image : ImagePart : Row1, Column1, Row2, Column2 : )
crop_rectangle1从每个输入图像中切割一个或多个矩形区域。
区域由矩形表示,矩形由左上角和右下角的坐标定义。
左上角必须在图像中。在右侧和底部,矩形可以超过图像,
但是设置了输出图像的域,因此只包含可以从输入图像派生的部分。
如果矩形区域落在图像中,那么每个生成的图像都具有对应矩形的大小。
和crop_part功能相似。
6.tile_channels(Image : TiledImage : NumColumns, TileOrder : )
将由多个通道组成的图像平铺成一个大的单通道图像。
输入图像Image含多张尺寸相同的图像,这些图像放在各自的通道中。
输出图像TiledImage包含一个通道图像,其中多个输入通道已被平铺到NumColumns列中。
这意味着tile_channels不能平铺彩色图像,但可使用 tile_images来处理彩色的 。
参数TileOrder决定图像复制到输出中的顺序,在这种情况下,这不是由NumColumns来决定的。
如果TileOrder = 'horizontal',则图像按水平方向复制,即,图像的第二通道将位于第一通道的右侧。
如果TileOrder = 'vertical',则图像按垂直方向复制,即,图像的第二通道将位于第一通道下方。
通过将图像的域复制到输出图像中相应的位置,得到TiledImage的域。
如果图像张数不是NumColumns的倍数,则输出图像的右下角将有未定义的灰色值。输出域将反映这一点。
例程
read_image (Xing1, 'xing/xing000')
read_image (Xing2, 'xing/xing050')
get_image_size (Xing1, Width, Height)
gen_rectangle1 (Image, 0, 0, Height - 1, Width - 1)
append_channel (Image, Xing1, Image)
append_channel (Image, Xing2, Image)
tile_channels (Image, TiledImage2, 2, 'vertical')
tile_channels (Image, TiledImage3, 1, 'horizontal')
7.tile_images(Images : TiledImage : NumColumns, TileOrder : )
tile_images将多个输入图像对象平铺到一个大图像中,
这些对象必须包含相同数量的通道。输入的图像Images 包含Num张图像,其大小可以不同。
输出图像TiledImage包含与输入图像一样多的通道。
在输出图像中,Num张输入图像被平铺到NumColumns列中。
每个tile都有相同的大小,大小由所有输入图像的最大宽度和高度决定。
如果输入的图像小于平铺大小,则将其复制到相应平铺的中心。参数TileOrder决定图像复制到输出中的顺序。
如果TileOrder = 'horizontal',则图像按水平方向复制,即,图像的第二幅图像将在第一幅图像的右边。
如果TileOrder = 'vertical',则图像按垂直方向复制,即,则图像的第二幅图像将位于第一幅图像的下方。
将图像的域复制到输出图像中相应的位置,得到图像的TiledImage域。
如果Num不是NumColumns倍数,则输出图像的右下角将有未定义的灰色值。
输出域将反映这一点。
例程
read_image (Image, 'claudia')
concat_obj (Image, Image, Images)
tile_images (Images, TiledImage1, 1, 'vertical')
8.tile_images_offset(Images : TiledImage : OffsetRow, OffsetCol, Row1, Col1, Row2, Col2, Width, Height : )
将多个输入图像对象平铺到一个大图像中,
这些对象必须包含相同数量的通道。
输入的图像对象Images 包含Num图像,其大小可能不同。
输出图像TiledImage包含与输入图像一样多的通道。
输出图像的大小由参数 Width, Height 决定。
输入图像的左上角在输出图像中的位置由参数OffsetRow和OffsetCol确定。两个参数必须精确地包含Num值。
每个输入图像都可以裁剪成比输入图像小的任意矩形。通过设置参数Row1、Col1、Row2和Col2实现。
如果将这四个参数中的任何一个设置为-1,则不裁剪相应的输入图像。
在任何情况下,所有四个参数都必须包含Num值。
如果对输入图像进行裁剪,位置参数OffsetRow和OffsetCol指的是裁剪后图像的左上角。
如果输入图像在输出图像中相互重叠(同时考虑到它们各自的域),
则图像中索引较高的图像将覆盖索引较低的图像的图像数据。
将图像Images 的域复制到输出图像中相应的位置,得到图像TiledImage的域。
例程
read_image (Image, 'claudia')
crop_rectangle1 (Image, ImageParts, [10,230], [60,120], [219,339], [299,219])
concat_obj (Image, ImageParts, Images)
tile_images_offset (Images, TiledImage, [0,290,390], [0,340,210], [-1,-1,-1], [-1,-1,-1], [-1,-1,-1], [-1,-1,-1], 500, 500)
|