Python机器学习和图像处理学习笔记

简介: Python机器学习和图像处理学习笔记

Python基础和Scikit Image

scikit image是用于图像处理的基本模块。使用import skimage导入环境。下面是Scikit image在python中的操作:

1.上传和查看图像

from skimage import io
img=io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
io.imshow(img)

输出如图所示

2.获取图像分辨率

使用名为shape的内置函数获取图像分辨率。

img=io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
img.shape

输出如下:(511, 419, 3)

可以知道图像分辨率是511×419,并且有三个通道,因为使用了RGB色彩。

3.查看像素值

#getting Pixel Values
from skimage import io
import pandas as pd
img=io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
df=pd.DataFrame(img.flatten())
filepath="pixel_value1.xlsx"
df.to_excel(filepath,index=False)

4.转换色彩空间

假设我们的图像在RGB色彩空间内,也可以转换成其他色彩格式。

  1. 我们需要使用color类将图像转换成不同的色彩格式,color类在skimage模块中。
  2. 还必须使用另一个模块pylab。

(1).RGB到HSV和HSV到RGB

#Import libraries
from skimage import io
from skimage import color 
from skimage import data
from pylab import *
#Read image
img = io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
#Convert to HSV
img_hsv = color.rgb2hsv(img)
#Convert back to RGB
img_rgb = color.hsv2rgb(img_hsv)
# show both figures
figure(0)
io.imshow(img_hsv)
figure(1)
io.imshow(img_rgb)

输出如下:

(2)RGB到XYZ和XYZ到RGB

#Import libraries
from skimage import io
from skimage import color 
from skimage import data
from pylab import *
#Read image
img = io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
#Convert to XYZ
img_xyz = color.rgb2xyz(img)
#Convert back to RGB
img_rgb = color.xyz2rgb(img_xyz)
# show both figures
figure(0)
io.imshow(img_xyz)
figure(1)
io.imshow(img_rgb)

(3)RGB到YUV和YUV到RGB

#Import libraries
from skimage import io
from skimage import color 
from skimage import data
from pylab import *
#Read image
img = io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
#Convert to XYZ
img_yuv = color.rgb2yuv(img)
#Convert back to RGB
img_rgb = color.yuv2rgb(img_yuv)
# show both figures
figure(0)
io.imshow(img_yuv)
figure(1)
io.imshow(img_rgb)

……

5. 保存图像

每次分析完图像后,我们可能想保存图像。用skimage.io里的imsave函数。

#Import libraries
from skimage import io
from skimage import color 
from skimage import data
from pylab import *
#Read image
img = io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
#Convert to XYZ
img_yuv = color.rgb2yuv(img)
#Convert back to RGB
img_rgb = color.yuv2rgb(img_yuv)
io.imsave("Lena_yuv.jpg",img_yuv)

6.创建基本图形

使用skimage中的绘图类draw进行基本绘图

1.直线

line函数用于在图像上绘制简单的直线。在下列代码中,前两个参数表示第一个点,后两个参数表示第二个点。可以改变支线的像素值以便能够在图像上查看这些点。

from skimage import io
from skimage import draw
img=io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
x,y=draw.line(0,0,200,200)
img[x,y]=0
io.imshow(img)
print(x)
print(y)

2.绘制矩形

可以使用polygon函数绘制矩形,也可绘制任意的多边形。我们只需要给定x和y坐标,然后定义宽度和高度即可。

在下面的代码中使用了rectangle函数。它返回我们要修改的形状。

from skimage import io
from skimage import draw
img=io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
def rectangle(x,y,w,h):
    rr,cc=[x,x+w,x+w,x],[y,y,y+h,y+h]
    return (draw.polygon(rr,cc))
rr,cc = rectangle(10,10,200,200)
img[rr,cc]=80
io.imshow(img)

3.绘制圆形

circle函数用于绘制圆形,在下列代码中,前两个参数表示圆形在图像中的位置,后两个参数表示半径。

#Import libraries
from skimage import io
from skimage import draw
#Load image
img=io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
#Define circle coordinates and radius
x,y=draw.circle(200,200,10)
#Draw circle
img[x,y]=30
#Show image
io.imshow(img)

4.绘制贝塞尔曲线

#Import libraries
from skimage import io
from skimage import draw
#Load image
img=io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
#Define Bezier curve coordinates
x,y=draw.bezier_curve(0,0,20,20,50,90,100)
#Draw Bezier
img[x,y]=30
#Show image
io.imshow(img)

可以使用bezier_curve 函数绘制贝塞尔曲线。我们需要指定至少三个控制点的位置,然后获取曲线的形状。下列代码中前六个参数定义了3个点,最后一个参数定义了曲线中的张力(tension)。调整参数值会改变曲线的形状。

5.执行伽马校正

使用skimage模块中的exposure类,根据显示设备的属性进行伽马校正。exposure类中包含了名为adjust_gamma的函数,它以图像和期望的伽马值为输入。我们会得到伽马校正后的图像。

from skimage import exposure
from skimage import io
from pylab import *
img=io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
gamma_corrected1=exposure.adjust_gamma(img,0.5)
gamma_corrected2=exposure.adjust_gamma(img,5)
figure(0)
io.imshow(gamma_corrected1)
figure(1)
io.imshow(gamma_corrected2)

6.旋转、平移和缩放图像

有时候我们可能会想旋转图像或者修改图像的尺寸。为此,可以使用skimage模块中的transform类。Transform类有两个函数:rotate和resize,其中rotate以旋转角度为参数,而resize以目标尺寸为参数。

from skimage import io
from skimage.transform import rotate
img=io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
img_rot=rotate(img,20)
io.imshow(img_rot)
from skimage import io
from skimage.transform import resize
img=io.imread("C:\\Users\\mac\\Pictures\\measure\\Lena.jpg")
img_res=resize(img,(100,100))
io.imshow(img_res)
io.imsave("ss.jpg",img_res)

7.确定结构相似度

结构相似度是衡量两个图像相似程度的指标。数值接近1表明图像非常相似,数值接近0表明图像比较不相似。

from skimage import io
from skimage.measure import compare_ssim as ssim
img_original=io.imread('Lena_rgb.jpg')
img_modified=io.imread('Lena_yuv.jpg')
ssim_original=ssim(img_original,img_original,data_range=img_original.max()-img_original.min(),multichannel=True)
ssim_different=ssim(img_original,img_modified,data_range=img_modified.max()-img_modified.min(),multichannel=True)
print(ssim_original,ssim_different)

输出结果为:1.0 0.532746174187595

SSIM有四个参数。前两个参数表示图像,第三个参数表示像素值的范围(最大像素值减去最小像素值),第四个参数是multichannel。当multichannel参数取值为True时,表示图像包含不止一个通道,例如RGB;当multichannel参数取值为False时,表示只有一个通道,例如灰度。

相关文章
|
4天前
|
分布式计算 Python
Python函数式编程学习笔记
高阶函数是能接收另一个函数作为参数的函数,如Python的map()、reduce()和filter()。map()将传入的函数应用到序列每个元素并返回迭代器,如将整数列表转换为字符串列表。reduce()对序列进行累积计算,例如求和。filter()根据给定函数返回的真值保留或丢弃序列元素,常用于筛选。sorted()函数支持自定义排序,如按绝对值或ASCII值排序。此外,还包括返回函数、匿名函数(lambda)、装饰器(用于动态增强函数功能)和偏函数(partial),用于固定函数部分参数,简化调用。
9 1
|
4天前
|
机器学习/深度学习 算法 算法框架/工具
Python深度学习基于Tensorflow(5)机器学习基础
Python深度学习基于Tensorflow(5)机器学习基础
16 2
|
4天前
|
机器学习/深度学习 算法 Python
深入浅出Python机器学习:从零开始的SVM教程/厾罗
深入浅出Python机器学习:从零开始的SVM教程/厾罗
|
4天前
|
机器学习/深度学习 边缘计算 TensorFlow
【Python机器学习专栏】Python机器学习工具与库的未来展望
【4月更文挑战第30天】本文探讨了Python在机器学习中的关键角色,重点介绍了Scikit-learn、TensorFlow和PyTorch等流行库。随着技术进步,未来Python机器学习工具将聚焦自动化、智能化、可解释性和可信赖性,并促进跨领域创新,结合云端与边缘计算,为各领域应用带来更高效、可靠的解决方案。
|
4天前
|
机器学习/深度学习 传感器 物联网
【Python机器学习专栏】机器学习在物联网(IoT)中的集成
【4月更文挑战第30天】本文探讨了机器学习在物联网(IoT)中的应用,包括数据收集预处理、实时分析决策和模型训练更新。机器学习被用于智能家居、工业自动化和健康监测等领域,例如预测居民行为以优化能源效率和设备维护。Python是支持物联网项目机器学习集成的重要工具,文中给出了一个使用`scikit-learn`预测温度的简单示例。尽管面临数据隐私、安全性和模型解释性等挑战,但物联网与机器学习的结合将持续推动各行业的创新和智能化。
|
4天前
|
机器学习/深度学习 数据采集 算法
【Python 机器学习专栏】机器学习在医疗诊断中的前沿应用
【4月更文挑战第30天】本文探讨了机器学习在医疗诊断中的应用,强调其在处理复杂疾病和大量数据时的重要性。神经网络、决策树和支持向量机等方法用于医学影像诊断、疾病预测和基因数据分析。Python作为常用工具,简化了模型构建和数据分析。然而,数据质量、模型解释性和伦理法律问题构成挑战,需通过数据验证、可解释性研究及建立规范来应对。未来,机器学习将更深入地影响医疗诊断,带来智能和精准的诊断工具,同时也需跨学科合作推动其健康发展。
|
4天前
|
机器学习/深度学习 分布式计算 物联网
【Python机器学习专栏】联邦学习:保护隐私的机器学习新趋势
【4月更文挑战第30天】联邦学习是保障数据隐私的分布式机器学习方法,允许设备在本地训练数据并仅共享模型,保护用户隐私。其优势包括数据隐私、分布式计算和模型泛化。应用于医疗、金融和物联网等领域,未来将发展更高效的数据隐私保护、提升可解释性和可靠性的,并与其他技术融合,为机器学习带来新机遇。
|
4天前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
|
4天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
4天前
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
34 1