Mathematica是著名的科学数值编程软件,它丰富的函数库和直观化的操作方式给我们带来了极大的便利,本文讲解如何用Mathematica处理图像。
工具/原料
mathematica
方法/步骤
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颜色的图像分解成三个灰度图像(代码为:ColorSe禊诬娱飑parate[image]),上述输出的RGB色阶分离的三个图片实际上是一个列表,可用列表索引输出其中的某一阶,例如输入:ColorSeparate[image][[2]],然后即可输出其中G这一阶的图像;;
4、下面我们用“Gaussi瞢铍库祢anFilter”函数首先列出指向垂直行坐标的参数,然后列出指向水平列坐标的焊剑杂锭参数,下图展示在-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,Transla墉掠载牿tionTransform[{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主要是用来减小源图像的尺寸,人们孀晏弁钾也常常希望填充一个图像使得它的尺寸增加.这里支持所有最普遍的填充方法,我们这里尝试一下应用到例图右边缘的四种不同的填充方法,输入代码:Gr足毂忍珩id@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中对图像就行基本操作了吧,赶紧去试试吧。