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时,表示只有一个通道,例如灰度。

相关文章
|
3天前
|
存储 Python 容器
Python编程基础第二天学习笔记
Python编程的第二天学习是建立在基础概念上的深化和扩展,强调了基本语法、数据类型、控制结构和函数的重要性。通过实践这些概念,可以增强对Python编程语言的理解,并为后续的高级学习打下坚实的基础。继续实践并逐渐探索更复杂的编程任务将有助于巩固和扩展这些基础知识。
23 7
|
1天前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
11 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
11天前
|
机器学习/深度学习 算法 Python
从菜鸟到大师:一棵决策树如何引领你的Python机器学习之旅
【9月更文挑战第9天】在数据科学领域,机器学习如同璀璨明珠,吸引无数探索者。尤其对于新手而言,纷繁复杂的算法常让人感到迷茫。本文将以决策树为切入点,带您从Python机器学习的新手逐步成长为高手。决策树以其直观易懂的特点成为入门利器。通过构建决策树分类器并应用到鸢尾花数据集上,我们展示了其基本用法及效果。掌握决策树后,还需深入理解其工作原理,调整参数,并探索集成学习方法,最终将所学应用于实际问题解决中,不断提升技能。愿这棵智慧之树助您成为独当一面的大师。
19 3
|
13天前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【9月更文挑战第7天】当我们身处数据海洋,如何提炼出有价值的洞察?决策树作为一种直观且强大的机器学习算法,宛如智慧之树,引领我们在繁复的数据中找到答案。通过Python的scikit-learn库,我们可以轻松实现决策树模型,对数据进行分类或回归分析。本教程将带领大家从零开始,通过实际案例掌握决策树的原理与应用,探索数据中的秘密。
25 1
|
1天前
|
机器学习/深度学习 数据采集 算法
机器学习新纪元:用Scikit-learn驾驭Python,精准模型选择全攻略!
在数据爆炸时代,机器学习成为挖掘数据价值的关键技术,而Scikit-learn作为Python中最受欢迎的机器学习库之一,凭借其丰富的算法集、简洁的API和高效性能,引领着机器学习的新纪元。本文通过一个实际案例——识别垃圾邮件,展示了如何使用Scikit-learn进行精准模型选择。从数据预处理、模型训练到交叉验证和性能比较,最后选择最优模型进行部署,详细介绍了每一步的操作方法。通过这个过程,我们不仅可以看到如何利用Scikit-learn的强大功能,还能了解到模型选择与优化的重要性。希望本文能为你的机器学习之旅提供有价值的参考。
7 0
|
10天前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络入门到精通:Python带你搭建AI思维,解锁机器学习的无限可能
【9月更文挑战第10天】神经网络是开启人工智能大门的钥匙,不仅是一种技术,更是模仿人脑思考的奇迹。本文从基础概念入手,通过Python和TensorFlow搭建手写数字识别的神经网络,逐步解析数据加载、模型定义、训练及评估的全过程。随着学习深入,我们将探索深度神经网络、卷积神经网络等高级话题,并掌握优化模型性能的方法。通过不断实践,你将能构建自己的AI系统,解锁机器学习的无限潜能。
11 0
|
13天前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的基本原理与Python代码实践
【9月更文挑战第6天】本文深入探讨了人工智能领域中的机器学习技术,旨在通过简明的语言和实际的编码示例,为初学者提供一条清晰的学习路径。文章不仅阐述了机器学习的基本概念、主要算法及其应用场景,还通过Python语言展示了如何实现一个简单的线性回归模型。此外,本文还讨论了机器学习面临的挑战和未来发展趋势,以期激发读者对这一前沿技术的兴趣和思考。
|
23天前
|
机器学习/深度学习 算法 数据挖掘
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
|
14天前
|
机器学习/深度学习 数据采集 算法
数据挖掘和机器学习算法
数据挖掘和机器学习算法
|
17天前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
113 1