直方图均衡化
直方图均衡化
直方图均衡化在网络上有相当多的博客,CSDN有许多优秀的回答,读者可自行查询。本博客主要从直方图均衡化的数学原理入手,主要参考了这一篇博客:直方图均衡化的数学原理
直方图均衡化,实际上是我们需要考虑如下图的方式:如何把一个凹凸不平的函数给尽量抹平。
直方图的定义
由于我们平时遇到的直方图都是离散的,毕竟是像素统计出来的,但实际上我们可以先考虑连续情况,再推广到离散情况。
一个灰度级在范围[0, L-1]的数字图像,其直方图是一个离散函数
p(rk)=nknp(r_k)=\frac{n_k}{n}
p(rk)=nnk
n是图像的像素总数,nkn_knk是图像中第k个灰度级的像素总数,rkr_krk是第k个灰度级,k=0,1,2……L-1。这里我们对每一个nk都除以n是为了归一化,这样的画,函数与x轴包围的面积就是1。
直方图变换理论基础
设连续图像的概率分布为:
P(r)=limΔr→0A(r+Δr)−A(r)ΔrAP(r)=\lim_{\Delta r \rightarrow 0}\frac{A(r+\Delta r)-A(r)}{\Delta r A}
...
matlab基础 影像处理篇(二)
matlab中的几种图像处理方法
本节我们将接触几种图像处理方法:
图像二值化(image thresholding)
背景估计(background estimation)
连通域标记(connected-component labeling)
问题背景
我们看下面这张拍摄了大米的图片:
现在我们要数出里面有几颗米粒,并且测量其中米粒的大小。
作为人来说,我们可以一颗一颗数,手动测量米粒的长度,但是机器首先得识别出什么是米粒,再进行计数,这要如何做呢?实际上,识别米粒的过程就可以称作简单的计算机视觉的工作。
策略
在清楚了任务目标后,我们就需要制定一系列的策略来解决这个问题,我们可以分成以下步骤:
将图像二值化。直接将米的部分变成白色,背景变成黑色,这样就容易分开主体与背景了。
统计图片中,白色像素联通的部分,有几个部分,就有几颗大米。
image thresholding
首先先要将图像二值化,所以我们需要知道图像的直方图,然后根据直方图来判断,以灰度值多少为界来将图像二值化。
1234567%%img = imread('test image/rice.pn ...
matlab基础 影像处理篇(一)
matlab中的图像处理
(台湾人好像把图片称作影像捏)
imread() & imshow()
要对图片进行处理,当然第一步是读入图片了。matlab中使用imread方法读入图片,图片在matlab中将以矩阵的方式呈现。
读入之后,可以使用imshow方法显示读入的图片。
123img1=imread('test image/lena.tif');figureimshow(img1)
whos
关键字whos可以把现在工作区中的变量详细的展示出来,例如对于图片来说,whos可以显示变量的名字,它的size、数据类型以及它的占用空间大小。如果要展示简单的信息则使用关键字who。
imageinfo()和imtool()
对于图片类型来说,使用imageinfo方法可以更加详细且有针对性地展示某个图片的信息。而imtool方法则会为用户弹出一个内置的工具界面,里面可以使用图形化的按钮去对图片进行处理。
12imageinfo('test image/lena.tif')imtool('test image/lena.tif ...
matlab基础 工程篇(五 回归与内插)
matlab中的回归与内插
简单线性回归(simple linear regression)
首先想象,在一个坐标系中存在着一些离散的点,现在我们需要用一条线去拟合这些点,这就是简单线性回归。使用一次函数拟合是最为简单的情况。
在平面中,存在i组点 (xi,yi)(x_i,y_i)(xi,yi),现在我们要用一条直线 yi^=β0+β1x\hat{y_i}=\beta_0+\beta_1 xyi^=β0+β1x 拟合这些点,此时我们就需要用到最小二乘法。
最小二乘法(ordinary least squares)
最小二乘法简单理解为每个离散点到拟合直线的距离的平方和最小,不过这个距离不是点到直线的距离,而是y方向的差值,即 disi=yi−y^idis_i=y_i-\hat y_idisi=yi−y^i,那么现在我们的目标时找到这条直线,如何做呢?
首先,根据最小二乘法的原理,我们可以写出距离平方和(sum of squared errors, SSE):
SSE=∑idisi2=∑i(yi−y^i)2SSE=\sum_i dis_i^2=\sum_i(y_i- ...
matlab基础 工程篇(四 统计)
matlab中的统计
其实统计我们从小学到大学都有学习,已经是老朋友了,没有太多好说的,统计主要是需要我们掌握一些统计方法以及概率统计的知识。
主要的一些统计方法有:
平均数(mean)
中位数(median)
众数(mode)
四分位数(quartile)
范围(range)
方差(variance)
标准差(standard deviation)
方差和标准差
值得回顾的只有方差和标准差,因为其用到了概率统计的知识。matlab中的方差和标准差都是针对样本而言的,不是对于整体。
var()和std()
var方法表示求样本方差,公式为:
S2=Σ(xi−xˉ)2n−1S^2=\frac{\Sigma(x_i-\bar x)^2}{n-1}
S2=n−1Σ(xi−xˉ)2
std方法表示求样本标准差,公式为:
S=Σ(xi−xˉ)2n−1S=\sqrt\frac{\Sigma(x_i-\bar x)^2}{n-1}
S=n−1Σ(xi−xˉ)2
绘制统计图
先看以下代码:
123456x=1:14;freqy=[1 0 1 0 4 0 1 0 3 1 0 0 1 1]; ...
matlab基础 工程篇(三 线性方程式和线性系统)
matlab中求解线性方程组
在线性代数的课程中,我们学习过求解一个线性方程组,可以将方程组写成一个矩阵,然后用初等行变换进行求解。例如:
高斯消去法(Gaussian Elimination)和高斯约旦消去法(Gauss-Jordan Elimination)
上述图片的步骤就是高斯消元法。我们通过矩阵中 1.行间的交换2.行间的加减3.行的倍数 这三种变换,将矩阵变成一个上三角矩阵,然后将最后一行的解带入方程,一个一个回代求出所有的解。不过在计算机里,我们不能手动回代求解,所以我们可以让计算机继续简化这个矩阵,仍然用行变换的规则,将矩阵变成对角矩阵,这样解就都出来了,这就是高斯约旦消元法,实际上就是在高斯消元法的基础上继续往下做而已。
可以参看这篇博文,有图,很详细.
rref()
在matlab中,可以使用rref方法求解线性方程组,且rref函数用的方法是高斯约旦消元法。
1234A = [1 2 1; 3 5 6; 4 5 2;];b = [4 7 9]'; % 注意这里有个转置符号format rat % 结果以分数形式显示r =rref([A b])
LU F ...
matlab基础 工程篇(二 方程式求根)
使用matlab对方程式求根
matlab中解决方程式的根的问题主要可以通过两个方法:
设未知数法(symbolic approach)
数值求根工具(numeric root solvers)]
两个方法针对不同的情况,不存在孰优孰劣。下面我们开始逐一介绍。
symbolic approach
刚知道这点的时候我真的感到相见恨晚,matlab居然可以直接设未知数,然后求解方程,甚至可以计算微积分!我要是早点知道的话……那高数作业岂不是起飞!好了,说回正题,matlab中需要使用sym或者syms定义未知数,此时定义的未知数是一种类型为sym的特殊变量。如下:
123456x = sym('x'); % 字符与赋值对象最好一致,不然容易乱,除非你记得住syms r t p q; % syms可以一次性设多个未知数,因此更加常用A = sym('a', 3); % 不过如果要一次性设一个矩阵中所有的未知数,还是得用sym()% 这里是设了3*3的未知数给矩阵A。
然后我们就可以对未知数进行各种运算:
123syms x;y = x+x+x; % ...
matlab基础 工程篇(一 数值微积分)
前言
matlab是一款功能强大的计算工具。最近我重新学习了计算机视觉的相关知识,其中,使用matlab编写程式码是不可缺少的环节。然而在过程中我遗忘了许多的编写规则和内置函数,因此,为了重新掌握matlab语言,我试图寻找一些基础的课程或者教程。最终,我在B站上发现了一个讲解得极其优秀的课程,是由台湾大学教授郭彦甫主讲的《matlab教学》。
该课程共分14P,13节基础内容。涵盖初中级、高级、影像处理、工程相关四块内容。我在写这篇博客之前,已经将这些内容都学习完成,写文章的主要目的是回顾和总结学到的知识。而为了趁热打铁,博客开头将会从我最近学完的内容写起,即“工程相关”的一块。
在使用matlab之前,请确保拥有一些必要的高等数学、微积分、线性代数、概率统计知识。(不过别担心,稍微复杂的地方在课程中会有解释)
这里附上B站视频链接:MATLAB教程_台大郭彦甫(14课)原视频补档
最后我要再一次强烈安利一下这门课:台湾口音很可爱、课程内容不困难、老师讲解很细致,总之就是非非非常的nice!
下面让我们开始吧!
matlab与数值微积分
matlab与微积分的联系主要在关于两块内容: ...
小该碎碎念220618
毕业了!
小该碎碎念220609
我的新栏目兼日记,记录一些生活中的事情与感悟。这是第一期。