1、我们先尝试通过import导入mathematica自带的图片,导入图片之后将其命名为i,例如:i = Import["ExampleData/ocelot.jpg"]i = Import["ExampleData/lena.tif"]运行代码就可得到系统自带图形的输出;
2、通过Import函数,我们还能导入自己电脑中任意路径的需要修改的图片,例如,我们导入一张图片,并命名为image,代码:image=Import["C:\Users\xxx\Desktop\Jingyan\helicopter.jpg"],运行之后即可倒入所需的图片;
3、一个多通道的图像能够被分解成单通道图像的一个列表,反过来,一个多通道的图像能由任何数目的单通道图像来创建,这里把上例中的 RGB 颜色的图像分解成三个灰度图像(代码为:ColorSeparate[image]),上述输出的RGB色阶分离的三个图片实际上是一个列表,可用列表索引输出其中的某一阶,例如输入:ColorSeparate[image][[2]],然后即可输出其中G这一阶的图像;;
4、下面我们用“GaussianFilter”函数首先列出指向垂直行坐标的参数,然后列出指向水平列坐标的参数,下图展示在 -y方向上沿行坐标的一阶高斯导数(代码为:GaussianFilter[image, 2, {1, 0}] // ImageAdjust)以及在-x方向上沿列坐标的一阶高斯导数(代码为:GaussianFilter[image, 2, {0, 1}] // ImageAdjust);
5、下面我们使用“ImageLines”函数返回标准图像坐标中的线条,例如输入:ImageLines[GradientFilter[image, 1], 0.1, 0.05]Show[image, Graphics[{Red, Thickness[0.01], Line[%]}]]然后运行输出,前一行是返还坐标点,后一行是在图片上绘制直线;
6、下面我们再对图像进行移动操作,首先将图像移动1/4图像宽度,输入:ImagePerspectiveTransformation[image, TranslationTransform[{0.25, 0}]],运行之后可以看到图片向右移动了1/4的图片宽度,下面再以像素为单位就行移动:ImagePerspectiveTransformation[image, TranslationTransform[{80, 0}], DataRange -> Full],运行之后可以看到图片向右移动了80像素;
7、下面我们对图片进行裁剪操作,首先,我们从图片上方往下裁剪,输入代码:ImageTake[image, 250],运行后就可以看到我们的图片只保留了上方250像素的内容;
8、下面我们对图片就行中心裁剪操作,输入代码:ImageCrop[image, {300, 300}],运行之后就可以看到我们的图片只保留了中心300x300的图片;
9、ImageCrop 主要是用来减小源图像的尺寸,人们也常常希望填充一个图像使得它的尺寸增加. 这里支持所有最普遍的填充方法,我们这里尝试一下应用到例图右边缘的四种不同的填充方法,输入代码:Grid@Partition[ ImagePad[image, {{0, 50}, {0, 0}}, #] & /@ {0, "Reflected", "Fixed", "Periodic"}, 2],运行之后就可以看到下图四种不同的右边缘填充方式;
10、我们还可用"ImageResize"函数来增加和缩减原始图像的大小,例如我们可以输入代码:{ImageResize[image, 600], ImageResize[image, 80]}运行后就可以得到一大一小两幅输出图像;
11、“ImageRotate”函数是另一个常用的空间操作. 它产生的图像,其所有像素都相对于图像中心的支点有一个逆时针旋转,本例将例图旋转了45度,输入代码:ImageRotate[image, \[Pi]/4],运行后就可以得到逆时针转了45度的图像;
12、我们还可以通过ImageAdd函数给图片通道增加值,本例通过相加和相乘来混合图像,输入代码:ImageAdd[ImageMultiply[ImageResize[image, 600], 2/3],ImageMultiply[i, 1/3]],运行输出是不是就得到了专业软件的多重曝光效果啦,到此,小伙伴们应该学会如何在Mathematica中对图像就行基本操作了吧,赶紧去试试吧。