[机器学习——代码python】(带注释)

  • clahe自适应均衡化
import cv2#导入opencv库
import matplotlib.pyplot as plt#调用画图的库

img = cv2.imread('timg.jpg',0) #0:读为读为灰度图像,1:读成彩色图像
res = cv2.equalizeHist(img)#直方图均衡化,归一化图像亮度和增强对比度

#createCLAHE:将图片分成很多小块,对每一小块进行直接直方图均衡化。
#clipLmit :  大于该参数的部分将被剪裁掉平均分配给整个图像
#tileGridSize : 表示每次处理块的大小。
#一般的clipLimit设置的值是40,值越大,均化的效果越好,值越接近0,就和原图像没什么区别
clahe = cv2.createCLAHE(clipLimit=2,tileGridSize=(10,10))
#创建一种clahe的方法
cl1 = clahe.apply(img)
#调用clahe 进行图像处理

#plt.subplot : 类似matlab的subplot(131)创建第一个子图
plt.subplot(131),plt.imshow(img,'gray')#显示原图
plt.subplot(132),plt.imshow(res,'gray')#显示直方图均衡化,使得亮的地方附近也过于亮
plt.subplot(133),plt.imshow(cl1,'gray')
#plt.imshow只表示对图片进行处理,并显示其格式,但不能显示,后面跟着plt.show()才能显示
plt.show()

clahe图片

  • 高斯模糊 中值模糊
import cv2
import numpy as np #使用numpy 中的随机函数
import matplotlib.pyplot as plt

img = cv2.imread('opencv.png',0) #直接读为灰度图像
for i in range(2000): #添加点噪声
    temp_x = np.random.randint(0,img.shape[0])#返回0~img.shape[0]之间的数目
    temp_y = np.random.randint(0,img.shape[1])#img.shape[0]:图像的垂直尺寸(高度),行数,1:宽度,列数
    img[temp_x][temp_y] = 255#把任意点置为255(即最亮)
#cv2.gaussianBlur(img,(ksize,ksize),sigamaX)
#img:处理图像;(ksize,ksize):卷积核的大小;
# sigmaX:小->高斯曲线越高越尖,模糊程度小
#大—>曲线越矮越平缓,模糊程度大
blur_1 = cv2.GaussianBlur(img,(5,5),0)

#medianBlur(img,5)中值滤波
#将像素点附近的像素进行排序,然后选取中值作为像素—>去除椒盐噪声
#5:核的尺寸
blur_2 = cv2.medianBlur(img,5)

plt.subplot(1,3,1),plt.imshow(img,'gray')#默认彩色,另一种彩色bgr
plt.subplot(1,3,2),plt.imshow(blur_1,'gray')
plt.subplot(1,3,3),plt.imshow(blur_2,'gray')
plt.show()

高斯模糊,中值模糊所用图

  • 拉普拉斯算子,sobel算子
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('dave.png',0)
#注意路径 如果图片在所处的文件夹中则无需多写上一层路径,若不在相同路径中,则加上上一层路径

#cv.CV_64F: 输出图像的深度,也可以使用-1
#Laplacian(img,ddepth)
#img 处理图像  ddepth 图像的深度(-1:表示与原图像相同的深度
laplacian = cv.Laplacian(img,cv.CV_64F)

#cv.Sobel(img,cv2.CV_64F,1,0,ksize)
#输出图像的深度;CV.64F的作用?,表示64位浮点数即64float
#1->进行x方向的导数
#0->进行y方向的导数
#ksize:内核的大小
sobelx = cv.Sobel(img,cv.CV_64F,1,0,ksize=5)
sobely = cv.Sobel(img,cv.CV_64F,0,1,ksize=5)
plt.subplot(2,2,1),plt.imshow(img,cmap = 'gray')

#plt.xticks([]);去除坐标轴的刻度
plt.title('Original'),plt.xticks([]), plt.yticks([])
plt.subplot(2,2,2),plt.imshow(laplacian,cmap = 'gray')
plt.title('Laplacian'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,3),plt.imshow(sobelx,cmap = 'gray')
plt.title('Sobel X'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,4),plt.imshow(sobely,cmap = 'gray')
plt.title('Sobel Y'), plt.xticks([]), plt.yticks([])
plt.show()

拉普拉斯,sobel图

  • 傅里叶变换
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread('opencv.png',0)
#np.fft.fft2(img)  通过傅里叶变化得到频谱图
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)#平移频谱到图像中央
magnitude_spectrum = 20*np.log(np.abs(fshift))#将频谱转换成db
# 完成频谱图的绘制
plt.subplot(121),plt.imshow(img, cmap = 'gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()

傅里叶变换

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值