精华内容
下载资源
问答
  • 数字图像处理复习

    2020-06-25 14:34:53
    图像的特征描述有哪些(具体说明颜色(直方图)、形状(形状树、形状矩)、纹理(区域傅里叶)、特征点(SIFT SURF))。 图像增强的方法(灰度增强、直方图均衡化,各个函数(幂函数、对数函数

    简答题:8’*3
    1、图像的数字化过程:采样,分色,量化,编码相关概念。
    采样:采样的实质就是用多少点来描述一幅图像,采样结果质量的高低就是图像分辨率,连续图像的空间样本实际上就是用采样函数与连续图像相乘的结果。空间采样函数为:
    在这里插入图片描述
    分色:指RGB图像数据被转换为最接近等量的青、品红、黄、黑(CMYK)数值的工艺。
    量化:量化指将采样后离散图像的值表示为与其幅度成比例的整数。
    编码:图像数字化后得到的图像数据量十分巨大,由于图像数据本身固有的冗余性和相关性,可以使用编码将大的图像数据文件转换成较小的图像数据文件。

    2、图像压缩算法:给出两个压缩算法(符号编码,统计编码,变换编码,模型编码)各种编码包括哪些,简单描述基本原理。
    统计编码:
    huffman编码:赫夫曼编码是一种依据变长最佳编码定理,基于统计的无损编码。步骤如下:
    (1)将信源符号xix_i按出现概率从大到小排序;(2)将最小的两个信源相加,重复这一步骤,始终将概率较大的分支放在上部,直到只剩下一个信源符号且概率为1;(3)对每对组合的上边与下边标号1与0;(4)由每个信源到概率1.0处的路径形成的0、1逆序列为赫夫曼编码。

    香农-费诺编码:基于统计的变长编码算法:
    (1)将信源符号按出现的概率从大到小排列;(2)将信源分成两部分,使两部分的概率尽可能接近,重复直至不可再分;(3)从左至右一次为这两部分标记0、1;(4)将各个部分标记的0、1串拼接起来得到编码。

    变换编码:
    基本原理:图像数据一般具有较强的相关性,图像经过正交变换后,分散在原空间的图像数据在新的坐标系中得到集中,只要删除接近于0的系数并且对较小的系数进行粗量化,保留包含图像主要信息的系数,以此进行编码。

    包括:基于FFT的图像压缩技术、基于DCT 的图像压缩技术、基于哈达玛变换的图像压缩技术

    3、形态学运算:膨胀,腐蚀,开运算(先腐蚀,后膨胀),闭运算(先膨胀,后腐蚀)。(解释什么是膨胀算子…)
    注:以下-均为圈里-
    膨胀:B对A的膨胀实质上就是一个由所有平移量zz组成的集合,这些平移量满足:当B的反射集平移了zz之后,与集合A的交集不为空。
    膨胀算子:

    在这里插入图片描述
    腐蚀:B对A的腐蚀即为平移量zz的集合,这些平移量满足集合B平移zz之后仍然属于集合A。
    腐蚀算子:
    在这里插入图片描述
    开运算:先用结构元素B对A进行腐蚀,再用B对A进行膨胀。可以去除轮廓的毛刺,分离图像轮廓的作用
    开运算公式:
    在这里插入图片描述
    闭运算:先膨胀再腐蚀,可以起到去除图像区域中的小孔,填平轮廓缺口的作用。
    闭运算公式:
    在这里插入图片描述

    4、滤波器(巴特沃斯、理想)及他们的公式。
    理想低通滤波器:指可以截断傅里叶变换中的所有处在离变换原点的距离比指定距离D0D_0要远的位置,传递函数:
    H(u,v)={1:D(u,v)D00:D(u,v)>D0 H(u,v)= \left\{ \begin{array}{lr} 1 & : D(u,v)\le D_0\\ 0 & : D(u,v) > D_0 \end{array} \right.
    D0D_0是一个非负整数,D(u,v)D(u,v)是从点(u,v)(u,v)到频率平面原点的距离,D(u,v)=u2+v2D(u,v)=\sqrt{u^2+v^2},“理想”指小于等于D0D_0的频率可以完全不受影响,大于D0D_0的频率则完全不通过,D0D_0称为截止频率。
    巴特沃斯低通滤波器:物理上可以实现的一种低通滤波器为巴特沃斯低通滤波器,一个阶为nn,截止频率为D0D_0的巴特沃斯低通滤波器的传递函数为:
    H(u,v)=11+[D(u,v)/D0]2n H(u,v)=\frac{1}{1+[D(u,v)/D_0]^{2n}}
    常取使HH最大值降到某个百分比的频率为截止频率。
    理想高通滤波器与巴特沃斯高通滤波器与上述相反:
    H(u,v)={1:D(u,v)D00:D(u,v)<D0 H(u,v) = \left\{ \begin{array}{lr} 1 & : D(u,v)\ge D_0\\ 0 & : D(u,v) <D_0 \end{array} \right.
    H(u,v)=11+[D0/D(u,v)]2n H(u,v)=\frac{1}{1+[D_0/D(u,v)]^{2n}}
    带通和带阻滤波器:允许一定频率范围内的信号通过而阻止其他频率范围信号通过
    公式:
    H(u,v)={1:D1(u,v)D0D2(u,v)D00: H(u,v) = \left\{ \begin{array}{lr} 1 & : D_1(u,v)\le D_0或D_2(u,v) \le D_0\\ 0 & : 其他 \end{array} \right.
    D1(u,v)=(uu0)2+(vv0)2D2(u,v)=(u+u0)2+(v+v0)2D_1(u,v)=\sqrt{(u-u_0)^2+(v-v_0)^2}\\D_2(u,v)=\sqrt{(u+u_0)^2+(v+v_0)^2}
    5、图像的特征描述有哪些(具体说明颜色(直方图)、形状(形状数、形状矩)、纹理(区域傅里叶)、特征点(SIFT SURF))。
    颜色:直方图
    边界描述:
    边界长度:边界所包围区域的轮廓长度
    边界的直径:边界上任意两点距离的最大值
    形状数:值最小的4链码的一阶差分码。
    傅里叶描述子:傅里叶的高频部分对应一些细节,低频分布对应基本形状。统计矩:描述对边界的一维表示。
    区域描述:
    区域面积:描述区域的大小
    区域重心
    纹理:
    统计法:基于图像的灰度直方图的特性描述纹理
    傅里叶频谱法:全局纹理模式在频域中容易得到分辨
    不变矩
    特征点:
    SIFT
    SURF

    图像增强的方法(灰度增强、直方图均衡化,各个函数(幂函数、对数函数…)的作用,分别增强图像的哪一部分(幂函数增强亮的部分,对数函数增强暗的部分…))
    直接灰度变换:
    图像求反:适用于增强嵌入于图像暗色区域的白色或灰色细节;
    线性灰度变换:用分段线性的方法将需要的图像细节灰度级拉伸,增强对比度,将不需要的图像灰度级进行压缩;
    对数变换:增强图像暗的部分,频谱中低值部分;
    幂函数:增强图像亮的部分,频谱中高值部分。
    直方图均衡化:
    将原始图像不均匀的直方图变换成均匀分布的形式,使图像具有高对比度和多变的灰度色调,显示出一幅灰度级丰富且动态范围大的图像。

    程序设计题 10’*2
    给出XXX算法描述或程序
    (快速傅里叶算法(蝶形图)、直方图均衡化算法、算数压缩、canny图像分割)
    1、快速傅里叶变换:
    图像的二维快速傅里叶变换可以看成先对行都做一次一维快速傅里叶变换再对列做一次一维快速傅里叶变换,所以只需要实现一维快速傅里叶变换。
    首先:一维离散傅里叶变换公式为:F(u)=x=0M1f(x)ei2πux/MF(u)=\sum^{M-1}_{x=0}f(x)e^{-i2\pi ux/M},其中u=0,1,2,...,M1u=0,1,2,...,M-1

    设原始信号序列为f(x)f(x),长度为L(L=2N,2)L(L=2^N,为2的整数次方)x=0,1,2,...,L1,WLux=ei2πux/L=cos(2πux/L)+isin(2πux/L)x=0,1,2,...,L-1,W^{ux}_{L}=e^{-i2\pi ux/L}=cos(2\pi ux/L)+isin(2\pi ux/L)xx奇偶性分为两组:
    在这里插入图片描述
    F(u)=F1(u)+WLuF2(u),F(u+L/2)=F1(u)WLuF2(u)F(u)=F_1(u)+W^u_LF_2(u),F(u+L/2)=F_1(u)-W^u_LF_2(u)
    得到蝶形公式
    在这里插入图片描述
    根据上式,计算LL长度序列时,只需计算L/2L/2长度序列,以此类推,最终只需计算长度为2的序列,通过递归可以求得原信号序列的傅里叶变换。
    伪代码:

    for i=0:x.length
    	reverse x[i]//计算倒序位码
    for i=0:log2N
    	step=1<<(i+1)
    	factor_step=N>>(i+1)
    	factor_real=1.0
    	factor_imag=0.0
    	for j=0:step/2
    		for k=j;k<N;k+=step
    			k2=k+step/2//蝶形运算的两个输入
    			temp_real=real[k2]*factor_real-imag[k2]*factor_imag
    			temp_imag=real[k2]*factor_imag+imag[k2]*factor_real
    			//F+W*F
    			real[k2]=real[k1]-temp_real
    			imag[k2]=imag[k1]-temp_imag
    			//F-W*F
    			real[k1]=real[k1]+temp_real
    			imag[k1]=imag[k1]+temp_imag
    			factor_real=cos(-2*PI*(j+1)*factor_step/N)
    			factor_imag=sin(-2*PI*(j+1)*factor_step/N)
    

    2、直方图均衡化:
    1、遍历图像,统计每个灰度级下像素点的个数
    2、计算每个灰度级像素所占的比例
    3、按照比例重新计算每个灰度级的像素点个数,实现均衡化
    4、更新图像灰度值

    Mat equalize_hist(Mat &input)
    {
    	Mat output=input.clone();
    	int gray_sum=input.rows*input.cols;
    	//统计每个灰度级下像素点个数存储在数组gray[256]
    	for(int i=0;i<input.rows;i++)
    	{
    		uchar *p=input.ptr<uchar>(i);
    		for(int j=0;j<input.cols;j++)
    		{
    			int value=p[j];
    			gray[value]++;
    		}
    	}
    	//统计出现频率
    	for (int i=0;i<256;i++)
    	{
    		gray_prob[i]=(double)gray[i]/sum;
    	}
    	//计算累计密度
    	gray_total[0]=gray_prob[0];
    	for(int i=1;i<256;i++)
    		gray_total[i]=gray_total[i-1]+gray_prob[i];
    	//重新计算灰度值。公式(N-1)*T+0.5
    	for(int i=0;i<256;i++)
    		gray_equ[i]=(uchar)(255*gray_total[i]+0.5);
    	for(int i=0;i<output.rows;i++)
    	{
    		uchar *p=output.ptr<uchar>(i);
    		for(int j=0;j<output.cols;j++)
    			p[j]=gray_equ[p[j]];
    	}
    	return output;
    }
    

    3、算数压缩:

    struct Range{
    string code;
    double high;
    double low;
    };
    void coding(vector<string>code,vector<double>prob)
    {
    	vector<Range>init_code_range;
    	double low=0.0;
    	for(int i=0;i<prob.size();i++)
    	{
    		Range temp;
    		temp.code=code[i];
    		temp.low=low;
    		temp.high=temp.low+prob[i];
    		init_code_range.push_back(temp);
    		low=temp.high;
    	}
    	double low=0.0;
    	double range=1.0;
    	double high=1.0;
    	for(int i=0;i<code.size();i++)
    	{
    		for(int j=0;j<init_code_range.size();j++)
    		{
    			if(code[i]==init_code_tange[j].code)
    			{
    				 low=low+range*init_code_range[j].low;
    				 high=low+range*init_code_range[j].high;
    				 range=high-low;
    			}
    		}
    		if(i==code.size()-1)
    			cout<<low;
    	}
    }
    

    4、canny图像分割
    步骤:
    1、利用高斯滤波器平滑图像

    for x=0:rows
    	for y=0:cols
    	//高斯平滑
    		temp=1/2*pi*sigma
    		g[x][y]=temp*exp(-((x-x0)*(x-x0)+(y-y0)*(y-y0)))/(2*sigma*sigma)
    normalize(g)//归一化
    

    2、计算滤波后图像的幅度和方向

    for x=0:rows
    	for y=0:cols
    		//卷积
    		g[x][y]+=kernel[x][y]*g[x][y]
    		//获得梯度图像
    		g[x][y]=sqrt(img_x[x][y]*img_x[x][y]+img_y[x][y]*img_y[x][y])
    

    3、对梯度幅度应用非极大值抑制,找出图像梯度中的局部极大值点,把其他非局部极大值点置零,得到细化的边缘
    将当前像素梯度与沿正负梯度方向上的两个像素进行比较,若大于则保留位边缘点,否则抑制。

    if Gp>=Gp1 and Gp>=Gp2
    	Gp maybe an edge
    else
    	Gp should be suppressed
    

    4、用双阈值算法检测和边缘连接,使用两个阈值T1T2T_1和T_2T1T_1用来找到每一条线段;T2T_2用来在这些线段的两个方向上延伸寻找边缘断裂处,连接这些边缘点。**

    for x=0:rows
    	for y=0:cols
    		if g[x][y]<low_threshold
    			g[x][y]=0;
    		if g[x][y]>high_threshold
    			g[x][y]=255	
    		else
    			//八连通邻域不为0
    			if eight connected neighborhood is not 0
    				g[x][y]=255
    			else
    				g[x][y]=0
    

    论述题 13’*3
    1、采样定理
    f(x)f(x)为一带限函数,即F(u)=0,u>ΩMF(u)=0,|u|>\Omega_M。如果采样频率Ωs>2ΩM\Omega_s>2\Omega_M,或者采样周期T<12ΩMT<\frac{1}{2\Omega_M},其中Ωs=1TT\Omega_s=\frac{1}{T},T为采样周期,那么f(x)f(x)就唯一地由其样值fs(x)f_s(x)所确定。临界采样率2ΩM2\Omega_M称为奈奎斯特频率,临界采样间隔12ΩM\frac{1}{2\Omega_M}称为奈奎斯特间隔。
    2、卷积定理
    函数卷积的傅里叶变换是函数傅里叶变换的乘积,分为时域卷积和频域卷积,时域卷积即时域内的卷积对应频域内的乘积,频域卷积即频域内的卷积对应时域内的乘积。
    卷积定理公式:F[f(x,y)h(x,y)]=H(u,v)F(u,v)\mathscr{F}[f(x,y)*h(x,y)]=H(u,v)F(u,v)
    F1[H(u,v)F(u,v)]=f(x,y)h(x,y)\mathscr{F}^{-1}[H(u,v)*F(u,v)]=f(x,y)h(x,y)
    卷积公式:f(x,y)g(x,y)=f(u,v)g(xu,yv)dudvf(x,y)*g(x,y)=\iint f(u,v)g(x-u,y-v)dudv

    3、约束最小二乘滤波
    与维纳滤波相比,1、约束最小二乘滤波只要求噪声方差和均值的知识,而这些参数经常能通过一幅给定的退化图像计算出来;2、约束最小二乘滤波所处理的每一幅图像都能产生最优的结果。
    一幅图像的输入输出可以表示为g(x,y)=H[f(x,y)]+n(x,y)g(x,y)=H[f(x,y)]+n(x,y),表达为向量-矩阵形式为g=Hf+n,约束最小二乘滤波的核心是解决退化函数HH对噪声的敏感性问题,因此,其约束条件为
    gHf^2=n2||g-H\hat{f}||^2=||n||^2
    最终解得其最优解为
    n2=x=0M1y=0N1n2(x,y)=MN[σn2+mn2]||n||^2=\sum^{M-1}_{x=0}\sum^{N-1}_{y=0}n^2(x,y)=MN[\sigma^2_n+m^2_n]
    其中
    σn2=1MNx=0M1y=0N1[n(x,y)mn]2\sigma^2_n=\frac{1}{MN}\sum^{M-1}_{x=0}\sum^{N-1}_{y=0}[n(x,y)-m_n]^2
    为整幅图像上采用取样平均的方法估计出的噪声方差,
    mn=1MNx=0M1y=0N1n(x,y)m_n=\frac{1}{MN}\sum^{M-1}_{x=0}\sum^{N-1}_{y=0}n(x,y)
    为样本均值。

    4、运动图像复原
    由匀速运动图像的退化函数为
    H(u,v)=Tπ(ua+vb)sin[π(ua+vb)]ejπ(ua+vb)H(u,v)=\frac{T}{\pi(ua+vb)}sin[\pi(ua+vb)]e^{-j\pi(ua+vb)}
    所以可以使用逆滤波消除运动模糊。
    1)求得模糊图像的傅里叶变换G(u,v)G(u,v)
    2)观察图像,估计水平方向与垂直方向的移动距离a,ba,b,确定退化函数H(u,v)H(u,v)
    3)计算复原图像的傅里叶变换F^(u,v)=H1(u,v)G(u,v)\hat{F}(u,v)=H^{-1}(u,v)G(u,v)
    4)对F^(u,v)\hat{F}(u,v)进行傅里叶逆变换,得到复原图像

    5、图像量化
    图像量化就是将离散的图像的值表示为与其幅度成比例的整数。
    一般过程是设立一组判决电平,每一个判决电平覆盖一定的区间,所有判决电平覆盖整个有效区间,若像素点的采样值落在某个判决电平的区间上,则该采样值取这个量化级的代表值。
    设量化操作在K维欧几里得空间上进行。A是X的取值空间,即值域,则A的一个N级量化器Q={Y,ψ}Q=\{Y,\psi\}由三部分组成
    1)对A的分割ψ={Rii=1,...,N}\psi=\{R_i|i=1,...,N\}
    {i=1N=ARiRj=0:i!=j \left\{ \begin{array}{lr} \bigcup^N_{i=1}=A\\ R_i\bigcap R_j=0 :i!=j \end{array} \right.
    2)码本的再生字符集Y={yii=1,...N}Y=\{y_i|i=1,...N\}
    3)量化操作QQ的映射:
    Q:AYyi=Q({xxRi}) Q:A→Y\\ y_i=Q(\{x|x∈R_i\})
    K=1K=1时是标量量化,K>1K>1时是向量量化。

    6、图像滤波
    图像滤波可用与图像增强、图像复原、图像去噪、边缘检测、角点检测、模板匹配等,既可以在空域进行,也可以在频域进行,滤波是一个邻域操作算子,利用给定像素周围的像素值确定此像素值的最终输出。
    公式:O(i,j)=m,nI(i+m,j+n)K(m,n)O(i,j)=\sum_{m,n}I(i+m,j+n)K(m,n)
    其中KK为滤波器(核),使用不同的滤波器达到不同的图像处理效果。
    1、线性平滑滤波器(均值滤波):抑制噪声,引起模糊。
    2、中值滤波器:抑制噪声。
    3、锐化滤波器:使边缘和轮廓线模糊的图像变得清晰,使细节更清晰。
    4、低通/高通滤波器(理想、巴特沃斯):消除噪声/锐化图像。
    5、同态滤波器:压缩图像亮度范围,增强对比度。
    6、逆滤波复原:适用于无噪声且H(u,v)H(u,v)较大的图像复原
    7、维纳滤波复原:综合退化函数与噪声统计特性,使得复原图像与原图像均方差最小。
    8、约束最小二乘方滤波:仅仅用噪声的均值和方差的只是执行最佳复原算法。

    综合应用 20’
    用无人机识别森林大火
    医学白细胞与红细胞检测

    展开全文
  • CCD:图像传感器: 用于图像采集和处理过程,把图像转换成电信号。 拾音器:声音传感器: 用于声音采集和处理过程,把声音转换成电信号。 音频采样数据:一般都是PCM格式 视频采样数据: 一般都是YUV,或RGB格式,...

    1.采集视频、音频

    • 1.1 采集视频、音频编码框架 *

    AVFoundation:AVFoundation是用来播放和创建实时的视听媒体数据的框架,同时提供Objective-C接口来操作这些视听数据,比如编辑,旋转,重编码

    • 1.2 视频、音频硬件设备 *

    CCD:图像传感器: 用于图像采集和处理的过程,把图像转换成电信号。
    拾音器:声音传感器: 用于声音采集和处理的过程,把声音转换成电信号。
    音频采样数据:一般都是PCM格式
    视频采样数据: 一般都是YUV,或RGB格式,采集到的原始音视频的体积是非常大的,需要经过压缩技术处理来提高传输效率
    2.视频处理(美颜,水印)
    视频处理原理:因为视频最终也是通过GPU,一帧一帧渲染到屏幕上的,所以我们可以利用OpenGL ES,对视频帧进行各种加工,从而视频各种不同的效果,就好像一个水龙头流出的水,经过若干节管道,然后流向不同的目标
    现在的各种美颜和视频添加特效的app都是利用GPUImage这个框架实现的,.

    • 视频处理框架 *

    GPUImage : GPUImage是一个基于OpenGL ES的一个强大的图像/视频处理框架,封装好了各种滤镜同时也可以编写自定义的滤镜,其本身内置了多达120多种常见的滤镜效果。
    OpenGL:OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。
    OpenGL ES:OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。
    3.视频编码解码

    • 3.1 视频编码框架 *

    FFmpeg:是一个跨平台的开源视频框架,能实现如视频编码,解码,转码,串流,播放等丰富的功能。其支持的视频格式以及播放协议非常丰富,几乎包含了所有音视频编解码、封装格式以及播放协议。
    -Libswresample:可以对音频进行重采样,rematrixing 以及转换采样格式等操 作。
    -Libavcodec:提供了一个通用的编解码框架,包含了许多视频,音频,字幕流 等编码/解码器。
    -Libavformat:用于对视频进行封装/解封装。
    -Libavutil:包含一些共用的函数,如随机数生成,数据结构,数学运算等。
    -Libpostproc:用于进行视频的一些后期处理。
    -Libswscale:用于视频图像缩放,颜色空间转换等。
    -Libavfilter:提供滤镜功能。
    X264:把视频原数据YUV编码压缩成H.264格式
    VideoToolbox:苹果自带的视频硬解码和硬编码API,但是在iOS8之后才开放。
    AudioToolbox:苹果自带的音频硬解码和硬编码API

    • 3.2 视频编码技术 *

    视频压缩编码标准:对视频进行压缩(视频编码)或者解压缩(视频解码)的编码技术,比如MPEG,H.264,这些视频编码技术是压缩编码视频的
    主要作用:是将视频像素数据压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。
    注意:最影响视频质量的是其视频编码数据和音频编码数据,跟封装格式没有多大关系
    MPEG:一种视频压缩方式,它采用了帧间压缩,仅存储连续帧之间有差别的地方 ,从而达到较大的压缩比
    H.264/AVC:一种视频压缩方式,采用事先预测和与MPEG中的P-B帧一样的帧预测方法压缩,它可以根据需要产生适合网络情况传输的视频流,还有更高的压缩比,有更好的图象质量
    注意1:如果是从单个画面清晰度比较,MPEG4有优势;从动作连贯性上的清晰度,H.264有优势
    注意2:由于264的算法更加复杂,程序实现烦琐,运行它需要更多的处理器和内存资源。因此,运行264对系统要求是比较高的。
    注意3:由于264的实现更加灵活,它把一些实现留给了厂商自己去实现,虽然这样给实现带来了很多好处,但是不同产品之间互通成了很大的问题,造成了通过A公司的编码器编出的数据,必须通过A公司的解码器去解这样尴尬的事情
    H.265/HEVC:一种视频压缩方式,基于H.264,保留原来的某些技术,同时对一些相关的技术加以改进,以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。
    H.265 是一种更为高效的编码标准,能够在同等画质效果下将内容的体积压缩得更小,传输时更快更省带宽
    I帧:(关键帧)保留一副完整的画面,解码时只需要本帧数据就可以完成(因为包含完整画面)
    P帧:(差别帧)保留这一帧跟之前帧的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(P帧没有完整画面数据,只有与前一帧的画面差别的数据)
    B帧:(双向差别帧)保留的是本帧与前后帧的差别,解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累
    帧内(Intraframe)压缩:当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,帧内一般采用有损压缩算法
    帧间(Interframe)压缩:时间压缩(Temporal compression),它通过比较时间轴上不同帧之间的数据进行压缩。帧间压缩一般是无损的
    muxing(合成):将视频流、音频流甚至是字幕流封装到一个文件中(容器格式(FLV,TS)),作为一个信号进行传输。

    • 3.3 音频编码技术 *

    AAC,mp3:这些属于音频编码技术,压缩音频用

    • 3.4码率控制 *

    多码率:观众所处的网络情况是非常复杂的,有可能是WiFi,有可能4G、3G、甚至2G,那么怎么满足多方需求呢?多搞几条线路,根据当前网络环境自定义码率。
    列如:常常看见视频播放软件中的1024,720,高清,标清,流畅等,指的就是各种码率。

    • 3.5 视频封装格式 *

    TS : 一种流媒体封装格式,流媒体封装有一个好处,就是不需要加载索引再播放,大大减少了首次载入的延迟,如果片子比较长,mp4文件的索引相当大,影响用户体验

    为什么要用TS:这是因为两个TS片段可以无缝拼接,播放器能连续播放
    FLV: 一种流媒体封装格式,由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,因此FLV格式成为了当今主流视频格式

    4.推流

    • 4.1 数据传输框架 *

    librtmp:用来传输RTMP协议格式的数据

    • 4.2 流媒体数据传输协议 *

    RTMP:实时消息传输协议,Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议,因为是开放协议所以都可以使用了。

    RTMP协议用于对象、视频、音频的传输。
    这个协议建立在TCP协议或者轮询HTTP协议之上。
    RTMP协议就像一个用来装数据包的容器,这些数据可以是FLV中的视音频数据。一个单一的连接可以通过不同的通道传输多路网络流,这些通道中的包都是按照固定大小的包传输的
    chunk:消息包

    5.流媒体服务器

    • 5.1常用服务器 *

    SRS:一款国人开发的优秀开源流媒体服务器系统
    BMS:也是一款流媒体服务器系统,但不开源,是SRS的商业版,比SRS功能更多
    nginx:免费开源web服务器,常用来配置流媒体服务器。

    • 5.2数据分发 *

    CDN:(Content Delivery Network),即内容分发网络,将网站的内容发布到最接近用户的网络”边缘”,使用户可以就近取得所需的内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度.
    CDN:代理服务器,相当于一个中介。
    CDN工作原理:比如请求流媒体数据
    1.上传流媒体数据到服务器(源站)
    2.源站存储流媒体数据
    3.客户端播放流媒体,向CDN请求编码后的流媒体数据
    4.CDN的服务器响应请求,若节点上没有该流媒体数据存在,则向源站继续请求流媒体数据;若节点上已经缓存了该视频文件,则跳到第6步。
    5.源站响应CDN的请求,将流媒体分发到相应的CDN节点上
    6.CDN将流媒体数据发送到客户端
    回源:当有用户访问某一个URL的时候,如果被解析到的那个CDN节点没有缓存响应的内容,或者是缓存已经到期,就会回源站去获取搜索。如果没有人访问,那么CDN节点不会主动去源站拿.
    带宽:在固定的时间可传输的数据总量,
    比如64位、800MHz的前端总线,它的数据传输率就等于64bit×800MHz÷8(Byte)=6.4GB/s
    负载均衡: 由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助.
    通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。
    均衡负载能够平均分配客户请求到服务器列阵,籍此提供快速获取重要数据,解决大量并发访问服务问题。
    这种群集技术可以用最少的投资获得接近于大型主机的性能。
    QoS(带宽管理):限制每一个组群的带宽,让有限的带宽发挥最大的效用
    6.拉流
    直播协议选择:
    即时性要求较高或有互动需求的可以采用RTMP,RTSP
    对于有回放或跨平台需求的,推荐使用HLS
    直播协议对比 :

    直播协议对比.png
    HLS:由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。可实现流媒体的直播和点播,主要应用在iOS系统
    HLS是以点播的技术方式来实现直播
    HLS是自适应码率流播,客户端会根据网络状况自动选择不同码率的视频流,条件允许的情况下使用高码率,网络繁忙的时候使用低码率,并且自动在二者间随意切
    换。这对移动设备网络状况不稳定的情况下保障流畅播放非常有帮助。
    实现方法是服务器端提供多码率视频流,并且在列表文件中注明,播放器根据播放进度和下载速度自动调整。
    HLS与RTMP对比:HLS主要是延时比较大,RTMP主要优势在于延时低
    HLS协议的小切片方式会生成大量的文件,存储或处理这些文件会造成大量资源浪费
    相比使用RTSP协议的好处在于,一旦切分完成,之后的分发过程完全不需要额外使用任何专门软件,普通的网络服务器即可,大大降低了CDN边缘服务器的配置要求,可以使用任何现成的CDN,而一般服务器很少支持RTSP。
    HTTP-FLV:基于HTTP协议流式的传输媒体内容。
    相对于RTMP,HTTP更简单和广为人知,内容延迟同样可以做到1~3秒,打开速度更快,因为HTTP本身没有复杂的状态交互。所以从延迟角度来看,HTTP-FLV要优于RTMP。
    RTSP:实时流传输协议,定义了一对多应用程序如何有效地通过IP网络传送多媒体数据.
    RTP:实时传输协议,RTP是建立在UDP协议上的,常与RTCP一起使用,其本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于低层服务去实现这一过程。
    RTCP:RTP的配套协议,主要功能是为RTP所提供的服务质量(QoS)提供反馈,收集相关媒体连接的统计信息,例如传输字节数,传输分组数,丢失分组数,单向和双向网络延迟等等。
    7.解码

    • 7.1 解封装 *

    demuxing(分离):从视频流、音频流,字幕流合成的文件(容器格式(FLV,TS))中, 分解出视频、音频或字幕,各自进行解码。

    • 7.2 音频编码框架 *

    fdk_aac:音频编码解码框架,PCM音频数据和AAC音频数据互转

    • 7.3 解码介绍 *

    硬解码:用GPU来解码,减少CPU运算
     优点:播放流畅、低功耗,解码速度快,
       * 缺点:兼容不好
    软解码:用CPU来解码
    优点:兼容好
       * 缺点:加大CPU负担,耗电增加、没有硬解码流畅,解码速度相对慢
    8.播放
    ijkplayer:一个基于FFmpeg的开源Android/iOS视频播放器
    API易于集成;
    编译配置可裁剪,方便控制安装包大小;
    支持硬件加速解码,更加省电
    简单易用,指定拉流URL,自动解码播放.
    9.聊天互动
    IM:(InstantMessaging)即时通讯:是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流.
    IM在直播系统中的主要作用是实现观众与主播、观众与观众之间的文字互动.

    • 第三方SDK *
      腾讯云:腾讯提供的即时通讯SDK,可作为直播的聊天室
      融云:一个比较常用的即时通讯SDK,可作为直播的聊天室
    展开全文
  • 超分辨率重建基础知识总结1、为什么使用超分辨率重建?2、经典图像插值算法有哪些,局限在哪里?...图像数字化处理过程中:成像、转换、编码、压缩、存储都会影响到图像的分辨率。另外**,还有成像噪声、电气噪

    超分辨率是计算机视觉的一个经典应用。SR是指通过软件或硬件的方法,从观测到的低分辨率图像重建出相应的高分辨率图像(说白了就是提高分辨率),在监控设备、卫星图像遥感、数字高清、显微成像、视频编码通信、视频复原和医学影像等领域都有重要的应用价值。
    本博文主要介绍SISR。SISR是一个逆问题,对于一个低分辨率图像,可能存在许多不同的高分辨率图像与之对应,因此通常在求解高分辨率图像时会加一个先验信息进行规范化约束。在传统的方法中,这个先验信息可以通过若干成对出现的低-高分辨率图像的实例中学到。而基于深度学习的SR通过神经网络直接学习分辨率图像到高分辨率图像的端到端的映射函数。

    1、为什么使用超分辨率重建?

    通常情况,图像传感器均能获得较好的质量,但在特殊场合,受到诸多因素影响,导致图像质量下降。如图像采集获取过程中:成像环境、成像距离、传感器形状和大小、光学系统的误差、空气扰动、物体运动、镜头散焦的影响。
    图像数字化处理过程中:成像、转换、编码、压缩、存储都会影响到图像的分辨率。另外**,还有成像噪声、电气噪声、系统噪声的叠加**。所以实际应用中,无法按照理想状况实现,存在的这些因素,必然影响图像的质量,获得较高质量的图像分辨率也是相当困难的。理论上,获得高分辨率只要增加成像系统的个数,最直接的方法是,通过传感器制造技术减小像素尺寸,增加单位面积的成像点阵就可以解决问题。
    综上,由于技术水平和经济条件的限制,使得成像传感器和光学器件的性能指标可能无法满足应用的需要,因此,需要采用信号处理方法提高图像分辨率

    2、经典图像插值算法有哪些,局限在哪里?

    经典算法也可以提高图像分辨率,包括最近邻插值、线性插值、双三次插值、样条插值,但只是可以增加图像的像素尺寸,改变图像的视觉效果,不能突破原有的信息量。因此,需要有一种新的方法来克服信息量不足的问题。
    (1)最近邻插值:又叫零阶插值(Nearest Neighbor Interpolation),是最简单的插值方法。它是用原始图像中的特定像素点的像素值去填充缩放后的图像,容易实现,对于灰度图像,即将原始图像进行逐点处理,把每一个像素点的灰度值进行插值倍数次复制。它采用的插值函数是一个常量函数,是矩形函数。
    最近邻插值的优点是简单易实现计算量很小,使得这种方法在很多场合得以应用。它的缺点是插值后的图像质量不高,常常出现方块效应和锯齿效应。
    (2)线性插值,又叫双线性插值(Bilinear Interpolation),也是一种简单的插值方法,广泛在图像重建领域中使用,主要是由于线性插值较低的计算量和优于邻域插值的图像质量,因为它是二阶代数拟合。它被称为双线性插值是因为在对图像的插值是分两次对行、列像素分别线性插值处理得到的。
    线性插值放大产生的图像比最近邻域插值产生的图像平滑,不会出现灰度值不连续的的情况。由于线性插值具有低通滤波器的性质,使高频分量受损,当放大倍数增大时,放大后的图像也会出现明显的块状现象,使图像轮廓一定程度上变得模糊。
    (3)三次插值(Cubic Interpolation),又叫双三次卷积值,它是在线性插值基础上的改进,基本思想是增加邻域像素点获得更佳的插值函数,利用卷积算子表达插值方法,卷积过程如下:
    在这里插入图片描述

    优点是图像差值质量好。
    (4)样条插值
    上述三种插值属于传统的多项式插值,为了处理更多数据点,更好的逼近,必须增加了多项式阶数,则应用上受到很多限制。多项式插值的问题:第一、多项式插值受数据点位置的影响大。若出现杠杆点则影响更大。第一多项式插值受输入点变动的影响大。多项式插值没有局部性,它的形式由所有的数据点决定的。一点变动,整个多项式都要变动。
    多项式插值在数据点间震荡被称为龙格现象,可以通过样条插值(Spline Interpolation)来解决问题。样条是特殊函数,多项式分段定义。样条插值比多项式插值好用,低阶样条插值能达到高阶多项式插值效果,还能避免龙格现象,且样条插值具有保凸特性。样条插值在插值点一阶连续可导,与期望函数的均方误差最小。

    3、进行超分辨率重建的方式有哪些?

    超分分为以下两种:
    Image SR。只参考当前低分辨率图像,不依赖其他相关图像的超分辨率技术,称之为单幅图像的超分辨率(single image super resolution,SISR)。
    Video SR。参考多幅图像或多个视频帧的超分辨率技术,称之为多帧视频/多图的超分辨率(multi-frame super resolution)。对于video SR,其核心思想就是用时间带宽换取空间分辨率。简单来讲,就是在无法得到一张超高分辨率的图像时,可以多取相邻几帧,然后将这一系列低分辨率的图像组成一张高分辨的图像。
    一般来讲Video SR相比于Image SR具有更多的可参考信息,并具有更好的高分辨率视频图像的重建质量,但是其更高的计算复杂度也限制了其应用。
    通常包括两个步骤:首先图像配准,即估计低分辨率图像之间亚像素级别的相对位移;其次图像融合,将多幅低分辨率图像融合成一幅高分辨率图像。

    4、超分辨率重建技术与图像复原技术区别与联系?

    超分辨率重建过程中,由于低分辨率图像序列往往受光学模糊、运动模糊、噪声以及混叠因素的影响,所以超分辨率重建技术涵盖图像复原技术。二者的区别是图像复原技术是在不改变图像尺寸的情况下恢复一幅图像,所以图像复原技术和图像超分辨率重建具有相当紧密的联系,可认为图像超分辨率重建是在理论上的第二代图像复原问题。研究图像超分辨率重建技术一方面具有重要的理论意义,推动图像复原技术的进一步发展;另一方面具有重要的实践意义,克服光学成像系统硬件方面的局限性,某些场合下仍然可以继续使用原有的低分辨率成像系统,在较小数据量传输的情况下,获得满足特定分辨率要求的图像。

    5、SR常用的评价指标

    有两种,一种是PSNR(峰值信噪比),另一种是SSIM(结构相似性评价),这两种评价指标是SR中最基础的测量被压缩的重构图像质量的指标。

    (1)PSNR——峰值信噪比 Peak Signal-to-Noise Ratio
    PSNR是信号的最大功率和信号噪声功率之比,来测量已经被压缩的重构图像的质量,通常以分贝(dB)来表示。PSNR指标越高,说明图像质量越好。
    PSNR=10log10(MAXI2MSE)=20log10(MAXIMSE) PSNR=10*\log_{10}(\frac{MAX_I^2}{MSE})=20*\log_{10}(\frac{MAX_I}{\sqrt {MSE}})
    其中,MAXI 表示的是图像中像素值中的最大值,MSE 表示的两个图像之间对应像素之间差值的平方的均值,单通道图像的MSE可以表示为如下公式:

    MSE=1MNi=1Nj=1M(fijfij)2 MSE=\frac{1}{M*N} \sum_{i=1}^N \sum_{j=1}^M (f_{ij}-f'_{ij})^2

    多通道(C通道)图像的MSE可以表示为如下公式:

    MSE=1CMNk=1Ci=1Nj=1M(fijkfijk)2 MSE=\frac{1}{C*M*N} \sum_{k=1}^C \sum_{i=1}^N \sum_{j=1}^M (f_{ijk}-f'_{ijk})^2

    (2)SSIM——结构相似性评价 Structural Similarity Index
    SSIM是衡量两幅图像相似度的指标,其取值范围为[0,1],SSIM的值越大,表示图像失真程度越小,说明图像质量越好。
    话不多说,先把SSIM的公式放上:
    L(X,Y)=2μXμY+C1μX2+μY2+C1 L(X,Y)=\frac{2\mu_X\mu_Y+C_1}{\mu_X^2+\mu_Y^2+C_1}

    C(X,Y)=2σXσY+C2σX2+σY2+C2 C(X,Y)=\frac{2\sigma_X\sigma_Y+C_2}{\sigma_X^2+\sigma_Y^2+C_2}

    S(X,Y)=σXY+C3σXσY+C3 S(X,Y)=\frac{\sigma_{XY}+C_3}{\sigma_X\sigma_Y+C_3}

    SSIM(X,Y)=L(X,Y)C(X,Y)S(X,Y) SSIM(X,Y)=L(X,Y)*C(X,Y)*S(X,Y)

    其中,μX 和μY 为图像X,图像Y的像素的均值,σX 和σY 为图像X,图像Y的像素的标准值,σ XY代表图像X和图像Y的协方差。
    此外,C1 ,C2和C3是常数,C1=(K1 * L)2,C2=(K2 * L)2,C3=1/2C3
    ,一般的,K1=0.01,K2 = 0.03 ,L = 255 。

    在实际操作中,对于求得图像像素的均值、方差和标准差,可以用高斯函数计算图像参数,可以保证更高的效率。同时,我们可以用平均结构相似性评价指标MSSIM来代替结构相似性评价指标SSIM。
    平均结构相似性评价指标MSSIM:利用滑动窗将图像分块,令分块总数为N,采用高斯加权计算每一窗口的均值、方差和协方差,计算对应块的结构相似度SSIM,取平均值。
    MSSIM(X,Y)=1Nk=1NSSIM(Xk,Yk) MSSIM(X,Y)=\frac{1}{N} \sum_{k=1}^{N} SSIM(X_k,Y_k)

    我们对于图像重构质量的评价指标还有其他许多种,但是我们也要思考的是真的是评价指标的高低和我们人眼看到的优劣是一致的么?除了这些常用评价指标外还有没有其他的指标可以衡量图像重构的质量。

    基于重建的方法

    通常都是基于多帧图像的,需要结合先验知识。有如下方法:

    • 凸集投影法(POCS)
    • 贝叶斯分析方法
    • 迭代反投影法(IBP)
    • 最大后验概率方法
    • 正规化法
    • 混合方法

    基于学习的图像超分辨率

    机器学习领域(非深度学习邻域)的图像超分方法如下:

    • Example-based方法
    • 邻域嵌入方法
    • 支持向量回归方法
    • 虚幻脸
    • 稀疏表示法

    基于深度学习的图像超分辨率重建技术

    基于深度学习的图像超分辨率重建的研究流程如下:

    • 1,首先找到一组原始图像Image1;
    • 2,然后将这组图片降低分辨率为一组图像Image2;
    • 3,通过各种神经网络结构,将Image2超分辨率重建为Image3(Image3和Image1分辨率一样)
    • 4,通过PSNR等方法比较Image1与Image3,验证超分辨率重建的效果,根据效果调节神经网络中的节点模型和参数
    • 5,反复执行,直到第四步比较的结果满意
    展开全文
  • 11、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。 SessionBean...
  • 之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅相关文档。 PHP的语法与C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言...
  • faceswap到底有哪些真正的社会价值呢? 我们可以用任何人来拍摄一个电影,然后变成我们想要的任何人。 我们可以创建更加真实的虚拟人物(AR、VR技术)。 穿衣购物可以更加真人模拟。 7 代码使用举例 1 将吴彦祖和...
  • 4、数字音频常用的编码有:混合编码、参数编码、波形编码 5、声音的A/D A/D转换的一个关键步骤是声音的采样和量化 可用下面的公式估算声音数字化后每秒所需的存储量(假定不经压缩): 存储量(B)=(采样频率...
  • 神经网络提取特征的方式有哪些 介绍下你了解的轻量级CNN模型 网络模型压缩方面的剪枝,量化和二值化编码 基于视频的C3D三维网络模型有听说过嘛 2.5D卷积呢 什么是空洞卷积,什么是反卷积,作用是什么 如何...
  • 哪些方面优化网络连接 接口设计 网络缓存 弱网测试&优化 耗电优化 耗电监控 Android Vitals 耗电监控都监控什么 如何监控耗电 Java Hook 插桩 多线程并发优化 Thread 使用 Thread 中断 ...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    79 <br>0115 如何判断是否为数字 79 <br>0116 如何在字符串中查找指定字符 79 <br>0117 如何在字符串中用一子串替换另一子串 80 <br>0118 将新字符串添加到已字符串中 80 <br>0119 如何在...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    7.15.3 图像处理实况 233 7.16 补充内容:灰度模式 236 7.17 小结 237 第8章 手势和触摸 238 8.1 触摸 238 8.1.1 阶段 238 8.1.2 触摸和视图方法 239 8.1.3 触摸视图 239 8.1.4 多点触摸 240 8.2 秘诀:...
  • iPhone开发秘籍(第2版)--详细书签版

    热门讨论 2012-12-11 13:42:25
    7.15.3 图像处理实况 233 7.16 补充内容:灰度模式 236 7.17 小结 237 第8章 手势和触摸 238 8.1 触摸 238 8.1.1 阶段 238 8.1.2 触摸和视图方法 239 8.1.3 触摸视图 239 8.1.4 多点触摸 240 8.2 秘诀:...
  • 该对象中本身没有记录多媒体编码的相关信息,但是它保存了编码的名称。Format的子类包括AudioFormat和VideoFormat类,ViedeoFomat又六个子类:H261Format、H263Format、IndexedColorFormat、JPEGFormat、RGBFormat...
  • 使用Arouter注意事项有哪些?如何让代码变得更加容易让人维护? 直接看我这篇博客:https://juejin.im/post/5c46e6fb6fb9a049a5713bcc 4.6 存在待解决问题 动态的管理组件,所以给每个组件添加几个生命周期...
  • java 面试题 总结

    2009-09-16 08:45:34
    1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    删除操作一旦执行,立即被监听器捕获到,进而在执行 删除操作前执行自定义的函数体,即判断实体有无undeletable标签,则中断删除操作,无则正常删除。 用例图 关系 关联关系 ;依赖关系 ;泛化关系;关系的...
  • 指点迷津:哪些情况下要考虑线程安全问题 4.4 ServletConfig接口 167 4.4.1 getInitParameterNames方法 168 4.4.2 getInitParameter方法 168 4.4.3 getServletName方法 168 4.4.4 getServletContext方法 168 4.4.5 ...
  • CruiseYoung提供的带详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 iPhone 3开发基础教程(针对iPhone SDK 3新特性全面改版) 基本信息 原书名: Beginning iPhone 3 Development: ...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    1.30如何判断哪些标识符可以使用,哪些被保留了? 初始化 1.31 对于没有显式初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”,它可否作为空指针或浮点零? 1.32 下面的代码为什么不能...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    1. C语言和汇编语言在开发单片机时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言...

空空如也

空空如也

1 2 3 4
收藏数 61
精华内容 24
关键字:

图像编码处理有哪些过程