创新实践课作业--图像预处理作业
本文章由Jupyter Notebook导出
任务一
请用在不使用Opencv框架的情况下实现图片的镜像操作,最终显示原图片,垂直镜像图片和水平镜像图片。
from PIL import Image,ImageFilter
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
im = Image.open("./lena.png")
plt.figure("Text") # 图像窗口名称
plt.imshow(im)
水平镜像
im2=im.transpose(Image.FLIP_LEFT_RIGHT)
plt.imshow(im2)
垂直镜像
im3=im.transpose(Image.FLIP_TOP_BOTTOM)
plt.imshow(im3)
任务二
请在不使用Opencv框架的情况下实现Gamma变换,并显示原图像,Gamma值为0.5和2时的图像。
im_G=im.convert("L")
plt.imshow(im_G)
gamma函数
def gamma_fun(gm):
return lambda x:pow(x/255,gm)*255
gamma=0.5
im_gm05=im_G.point(gamma_fun(0.5))
plt.imshow(im_gm05)
gamma=2
im_gm2=im_G.point(gamma_fun(2))
plt.imshow(im_gm2)
任务三
请在不使用Opencv框架的情况下完成中值滤波操作,最终显示原图像,滤波窗口大小为3时的滤波效果和滤波窗口大小为5时的滤波效果。
原始图像
plt.imshow(im)
窗口为3
im_mid3=im.filter(ImageFilter.MedianFilter(3))
plt.imshow(im_mid3)
窗口为5
im_mid5=im.filter(ImageFilter.MedianFilter(5))
plt.imshow(im_mid5)
任务四
请在不使用Opencv框架的情况下完成锐化操作,最终显示原图像,并使用1.2.19中的两个锐化算子进行锐化,然后显示图像效果,再使用PIL库内置锐化方法进行锐化操作,并显示结果。
原始图片
plt.imshow(im)
算子1
$$
\begin{bmatrix}
-1 & -1 & -1 \
-1 & 9 & -1 \
-1 & -1 & -1
\end{bmatrix}
$$
im_s1=im.filter(ImageFilter.Kernel((3,3),(-1,-1,-1,-1,9,-1,-1,-1,-1)))
plt.imshow(im_s1)
算子2
$$
\begin{bmatrix}
0 & -1 & 0 \
-1 & 8 & -1 \
0 & 1 & 0
\end{bmatrix}/4
$$
im_s2=im.filter(ImageFilter.Kernel((3,3),(0/4,-1/4,0/4,-1/4,8/4,-1/4,0/4,-1/4,0/4)))
plt.imshow(im_s1)
内置方法
im_spil=im.filter(ImageFilter.SHARPEN)
plt.imshow(im_spil)
ipynb下载链接
创新实践课作业--图像预处理作业
https://blog.loststar.tech/posts/fdb6251f/