1.图像旋转
from PIL import Image import numpy as np from skimage import data, exposure, img_as_float import matplotlib.pyplot as plt # 读取图像 im = Image.open("17.jpg") im.show() # 指定逆时针旋转的角度 im_rotate = im.rotate(45) im_rotate.show() im_rotate.save('t2.jpg')
2.图像翻转
out1 = im.transpose(Image.FLIP_LEFT_RIGHT) out1.show() out1.save('t3.jpg') # out2 = im.transpose(Image.FLIP_TOP_BOTTOM) # out2.show() # img1 = np.array(out2) # print(img1.shape)
3.图像加噪声
以下代码噪声图像的生成采用对图像进行高斯平滑,之后在随机的对图像添加椒盐噪声。
import cv2 from numpy import * def SaltAndPepper(src, percetage): NoiseImg = src NoiseNum = int(percetage * src.shape[0] * src.shape[1]) for i in range(NoiseNum): randX = random.random_integers(0, src.shape[0] - 1) randY = random.random_integers(0, src.shape[1] - 1) if random.random_integers(0, 1) == 0: NoiseImg[randX, randY] = 0 else: NoiseImg[randX, randY] = 255 return NoiseImg if __name__ == '__main__': img = cv2.imread('test.jpg') gimg = cv2.GaussianBlur(img, (7, 7), sigmaX=0) cv2.imshow('img2', gimg) cv2.waitKey() NoiseImg = SaltAndPepper(img, 0.4) # cv2.imshow('img',gimg) # figure() Pers = [0.1, 0.2, 0.3] for i in Pers: NoiseImg = SaltAndPepper(gimg, i) fileName = 'GaussianSaltPepper' + str(i) + '.jpg' # cv2.imwrite(fileName, NoiseImg, [cv2.IMWRITE_JPEG_QUALITY, 100]) cv2.imshow('img2', NoiseImg) cv2.waitKey()
图像中的噪声就是图像中的杂点或者干扰成分,噪声主要产生于图像的获取和传输过程中。噪声一般分为分为加性噪声和乘性噪声。
其中f(x,y)表示图像,g(x,y)表示没有噪声的图像部分,q表示噪声。这两种噪声可以通过取对数和指数相互转换:
常见的几种噪声有,高斯噪声、瑞利噪声、指数噪声和椒盐噪声。除椒盐噪声以外其他三种均属于加性噪声。椒盐噪声既不属于加性噪声也不属于乘性噪声。
噪声是有噪声分量灰度值的统计特性来描述的,它们可以被认为是由概率密度函数(PDF)表示的随机变量,下面是几种噪声的概率密度函数。
高斯随机变量z的概率密度函数为:
μ表示z的期望值,σ表示z的方差。
瑞利噪声的概率密度函数为:
它的均值和方差分别为a+√(πb)/4和b(4-π)/4。
指数分布噪声的概率密度函数为:
它的均值和方差分别为1/a和1/a2,其中a>0。
椒盐噪声又称双击脉冲噪声,它类似于随机分布在图像上的胡椒(黑色)和盐粒(白色)。它的概率密度函数为:
对于一个8位深度图像,a=0,b=255.