创新实践课作业--图像预处理作业

本文章由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)

png

水平镜像

im2=im.transpose(Image.FLIP_LEFT_RIGHT)
plt.imshow(im2)

png

垂直镜像

im3=im.transpose(Image.FLIP_TOP_BOTTOM)
plt.imshow(im3)

png

任务二

请在不使用Opencv框架的情况下实现Gamma变换,并显示原图像,Gamma值为0.5和2时的图像。

im_G=im.convert("L")
plt.imshow(im_G)

png

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)

png

gamma=2

im_gm2=im_G.point(gamma_fun(2))
plt.imshow(im_gm2)

png

任务三

请在不使用Opencv框架的情况下完成中值滤波操作,最终显示原图像,滤波窗口大小为3时的滤波效果和滤波窗口大小为5时的滤波效果。

原始图像

plt.imshow(im)

png

窗口为3

im_mid3=im.filter(ImageFilter.MedianFilter(3))
plt.imshow(im_mid3)

png

窗口为5

im_mid5=im.filter(ImageFilter.MedianFilter(5))
plt.imshow(im_mid5)

png

任务四

请在不使用Opencv框架的情况下完成锐化操作,最终显示原图像,并使用1.2.19中的两个锐化算子进行锐化,然后显示图像效果,再使用PIL库内置锐化方法进行锐化操作,并显示结果。

原始图片

plt.imshow(im)

png

算子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)

png

算子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)

png

内置方法

im_spil=im.filter(ImageFilter.SHARPEN)
plt.imshow(im_spil)

png

ipynb下载链接

图像预处理作业.ipynb


创新实践课作业--图像预处理作业
https://blog.loststar.tech/posts/fdb6251f/
作者
loststar
发布于
2020年7月14日
许可协议