一.PYTHON简单学习
1.python中变量和C语言的不同
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。等号(=)用来给变量赋值。
2.python中的列表类型(横向比较数组)
(1)用"[]"包含元素,元素用“,”隔开
(2)列表中的元素可以不同
(3)由于字符串在python中是一种数据类型(与C语言不同,C语言中只有字符),所 以字符串也可以作为列表的一个元素,进行整体的索引。
(4)索引更加灵活,可以对列表进行“切片”式的索引和赋值(变量[头下标:尾下标])
(5)加号 + 是列表连接运算符,星号 * 是重复操作
(6)Python 列表截取可以接收第三个参数,参数作用是截取的步长
(7)字符串可以格式化(类似C语言printf的格式化)
>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 将对应的元素值设置为 []
>>> a
[9, 2, 6]
3.if..elif..else条件控制语句
(1)格式
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
(2)缩进以划分语句,条件后跟“:”表示满足条件后要执行的语句
4.match..case条件控制语句
(1)格式
match subject:#同样是匹配后加:然后开始执行语句块
case :
case :
case :
case _:#类似C语言中的default:
(2)一个 case 也可以设置多个匹配条件,条件使用 | 隔开
5.while循环控制语句
(1)格式
while 判断条件(condition):
执行语句(statements)
6.for循环语句
(1)Python for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串
(2)格式
for in :
else:
(3)整数范围可以配合range()使用(实际生成了一个数列可以使用list(range())生成一个列表。
# 1 到 5 的所有数字:
for number in range(1, 6):
print(number)
##########################################
>>>for i in range(0, 10, 3) :#3为指定的增量
print(i)
0
3
6
9
>>>
7.函数
(1)格式
def 函数名(参数列表):
函数体
(2)实例
def max(a, b):
if a > b:
return a
else:
return b
a = 4
b = 5
print(max(a, b))
(3)在子函数中对全局变量赋值,python会认为该变量为局部变量,所以使用全局变量时要先对全局变量用global进行声明,这样python就会去全局变量的域里去找这个变量,就不会认为它是局部变量了。
num = 1
def fun1():
global num # 需要使用 global 关键字声明
print(num)
num = 123
print(num)
fun1()
print(num)
(4)在 python 中,类型属于对象,对象有不同类型的区分,变量是没有类型的
8.模块(通过import引入.py文件)
如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。
为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。
9.类
(1)类:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
类对象支持两种操作:属性引用和实例化。
属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name。
类对象创建后,类命名空间中所有的命名都是有效属性名。
(2)对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
(3)方法:类中定义的函数。
(4)定义格式
class ClassName:
.
.
.
(5)实例
class MyClass:
"""一个简单的类实例"""
i = 12345
def f(self):
return 'hello world'
# 实例化类,即创建一个类
x = MyClass()
# 访问类的属性和方法
print("MyClass 类的属性 i 为:", x.i)
print("MyClass 类的方法 f 输出为:", x.f())
二.图像预处理粗浅记录
1.直方图均衡(HE)
基本思想:image的像素值直方图集中在某一个区间内,对比度不够。通过将集中在小区间内的直方图通过非线性变换大致均衡地分布在整个【0~255】的区间上,以提高对比度。通常可以用来提高局部对比度,比如说整张图都拍黑或者整张图都拍亮了的情况。
2.自适应直方图均衡(AHE)
基本思想:如果图片中包含明显的过明或过暗的区域,那么基本的直方图均衡作用有限。因此使用移动模板在原始图片上进行固定步长的滑动,每次对模板内的像素点进行直方图均衡,这样每个点的像素值实际上是多次赋值以后的均值。可以较好的改善这个问题。
3.限制对比度的自适应直方图均衡(CLAHE)(又一次的升级版)
基本思想:限定一个阈值,对于直方图超过阈值的部分以等面积的方式放到直方图底部,把整张图垫高。但是直接这样处理后会使得图片显得一块一块看上去不连续,之后需要再进行双线性插值使图片颜色过渡更连续自然。
4.腐蚀和膨胀(并不是很理解捏)
通常,当有噪声的图像使用阈值二值化后,得到的边界不平滑,物体区域有一些错判的空洞,背景区域散布这一些小的噪声物体,连续的腐蚀和膨胀可以显著改善这种情况。
5.平滑均值滤波(一般不好用,会弱化图片特征,是图片模糊)
。。。再归混沌!
6.平滑中值滤波(对于椒盐性质的噪声效果明显)
7.平滑高斯滤波
基本原理:计算卷积的核的二维分布是一个山峰的形状。直观上仿造了人眼的特性,越靠近图片中央越清楚,越靠近边缘越模糊。一般用于“高斯金字塔”中(图片缩放相关)。