Blogger Template by Blogcrowds.

界面响应和数据处理分线程运行

对于有界面的程序开发,在开发过程中我们常常会面临一个问题,那就是在进行耗时操作时界面不响应,当然我们可以为耗时操作加上一个进度条,这样可以看起来舒服一点,但是对于需要进行多线程处理的耗时操作如实用OMP进行并行运算的时候,这时在OMP的for循环中实用进度条会面临一系列问题,如进度条不运行等,在面临这样的问题的时候我们最简单的想法就是将精度条独立为一个线程进行处理,因为进度条不需要在意精度,只需要表示一个运行过程而已,所以可以重新开辟一个线程进行处理,对于独立一个线程进行进度条处理的方法有很多:http://blog.csdn.net/bizhu12/article/details/6788241参照以上博客,我们可以简单的做出一个进度条线程,然而在我多次实验之后发现这样的方法存在问题:


一般进度条线程开辟完成后,我们需要在下面继续执行耗时操作的代码,在实验中我用sleep函数模拟耗时操作,试试证明在sleep过程中进度条没有任何反映,这让我很奇怪,理论上子线程应该是独立的才对,后来我找到一个比较靠谱的说法,实际上按照上述博客的说法,起始在MFC中主线程就是界面操作,而建立一个子线程对界面的操作实际上只是获取了一个界面变化的消息,这个消息依旧需要主线程进行处理,而此时我将耗时操作放在主线程中,同样阻塞了主线程,因此界面没有响应,因此单独建立一个进度条线程进行处理是行不通的。
  经过思考以后,我决定对耗时操作开辟一个线程,将耗时操作放在子线程中,这样主线程的界面可以一直响应,进度条的响应并不会由于耗时操作造成阻塞,这样在后台处理的过程中可以做到进度条的响应和耗时数据处理同时进行。然后一直等到耗时操作处理完毕,进度条停止响应,在这里又面临一个问题,如何判断耗时操作处理完毕。对于这个问题由于我采用线程池开辟线程进行处理,在判断过程中直接判断线程池中活跃线程数就可以了解到耗时操作是否处理完成。
处理核心代码如下:

上述第一个函数为耗时操作线程处理函数,第二个函数为实际处理函数,实际处理函数的代码为:

从上述代码中可以看到,主线程为进度条操作函数,而开辟的线程函数为耗时数据处理操作函数,实际上我们可以将整个数据处理流程绘制一个流程图如下,由于界面是主线程,因此界面响应应该为主线程,然后各个耗时的数据处理操作为子线程进行处理,这样的处理可以是的界面快速响应同时将耗时操作放在后台,得到比较友好的用户交互。


最后处理效果为:


非均匀性校正笔记(二)

1.引言:

对于面阵成像光谱仪,特别是那些应用于红外成像系统的传感器,通常受到很强的空间非均匀性的影响。这种空间非均匀性又称为固定模式噪声,由于传感器各个探测元件的响应不一致,造成空间非均匀性。另外,由于外部条件的影响(如外部环境温度,传感器暗电流的影像),空间非均匀会随着时间的变化发生漂移,这样要求在传感器运行过程中对非均匀性进行反复补偿。假设传感器响应是线性的,且只考虑传感器的探元的非均匀性。一个可靠的,基于梯度漂移的在两帧影像之间估计传感器运动的方法被使用。通过估计梯度的变化得到梯度漂移矩阵,通过梯度矩阵对传感器非均匀性进行校正。

2.传感器模型:

image

假设传感器响应和辐亮度之间有如下对应关系:

Eq(1)

image

image为传感器输出的DN值,image为场景的真实辐亮度,a为探测元件的增益,b为探测元件的偏置。如果假设所有增益都是一致的,然后将增益归一化可得:

Eq(2)

image

如果假设观测地物的温度在两帧之间的间隔内不发生变化,则这样的假设允许我们使用第n帧影像的的相邻像素去模拟第n+1帧影像,为了简化运行和方便处理,采用线性差值的方法进行模拟:

Eq(3)

image

image为垂直方向上的亚像元的偏移量

Eq(4)

image

image为水平方向上的亚像元偏移量

3.算法描述

3.1校正方法:

假设有两个影像集,image为分别为两个相邻帧的影像垂直和水平子像元偏移,如image中的每一个元素是一对连续帧,且只有垂直方向的偏移,不失一般性,假设每一个偏移都与每一个帧对相关,且image的参数是正的。假设image分别包含A个偏移对,和B个偏移对且A>B。

3.1.1垂直校正矩阵

对每一个垂直校正的矩阵image的计算都包含两个步骤:

1.首先生成一个中间矩阵image,中间矩阵的计算是通过两个相邻帧之间的比例差异来进行求解的,具体求解方法如下:

Eq(5)

image

对于j从1-N有:

Eq(6)

image

则,将Eq(1)带入Eq(6)中,可得:

Eq(7)

image

对于整个影像可以求得中间矩阵为:

Eq(8)

image

2.通过中间矩阵获取校正矩阵image

Eq(9)

image

image

image加到影像的任意一帧影像上:

Eq(10)

image

理想状况下Vp的每个元素都是相同的,但是实际上可能存在异常,为了减小这种误差,计算均值来减小误差。

Eq(11)

image

3.1.2水平方向校正矩阵

水平方向的校正与垂直方向的校正比较类似,也是分为两个过程

1.水平方向校正首先获取一个中间校正结果image

Eq(12)

image

根据Eq(12)和Eq(2)可得:

Eq(13)

image

同理有:

Eq(14)

image

Eq(15)

image

3.1.3总的校正矩阵

根据垂直校正偏移校正矩阵和水平偏移校正矩阵可得总体校正矩阵为:

Eq(16)

image

则由以上的推导可以得到对所有偏移像元校正范式为:

image

3.2偏移估计

根据以上校正过程,在校正中最主要的问题在于如何获取垂直方向偏移影像4和水平方向偏移影像集,文章中通过偏移估计算法得到影像偏移数据集。原始影像序列集中相邻帧之间的漂移通过基于梯度偏移的算法获取。

扩展:梯度偏移算法:

1.首先对原始影像连续帧对进行影像匹配

2.第二步是使用移动时域均值补偿评估真实影像的值

偏移估计的范式为:

image

4 实验部分:

主要影像算法效果的影响因素有三点,分别为1.校正方法中的起始位置获取的问题;2.对于偏移估计的算法;3.混叠现象

4.1校正方法的对校正精度的影响:

有三个主要的因素影像校正算法的稳定性,分别为:1.选取的起始数据集的为止;2.适当的处理正向和负向的偏移;3.正交移动的阈值image

1.对数据集进行偏移估计之后可以获取垂直方向偏移,和水平方向偏移两个数据集image,算法必须确定最佳的起算数据集,最简单的方法为统计两个数据集中影像对个数,选取影像对个数最多的影像作为起算影像。因为在计算部分均值矩阵的过程中控件非均匀性会造成影像,通过使用较多的数据集求均值,较小控件非均匀性的影响。

2.在数据集中获取两个相邻影像帧对之后它们之间的偏移可能为正,也可能为负,对于偏移为正从1开始算起向右计算,对于偏移为负的影像则从N开始算起向左计算。

3.另一个对校正结果有影响的参数为水平和垂直方向偏移处理误差阈值image,在理想的情况下偏移误差阈值为0,但是实际情况下无法使得偏移完全为0,因此在实际上可以设置一个较小的阈值,小于这个阈值则认为无偏移。

4.2偏移估计的影响:

基于梯度的偏移估计算法在较小或不存在的空间非均匀性影响下具有很好的精度,随着空间非均匀性的增大,偏移估计的误差也在增大,当偏移误差估计大小超过百分之五个像元时就会影响校正结果。为了减小这样的评价误差,每一帧输入影像序列都使用一个平滑滤波器进行滤波处理。由于空间的非均匀性是高频噪声,通过一个低通滤波器可以消除影响,提高精度。

4.3数据混杂

数据混杂发生在降采样的过程中,数据混杂是一个比较常见的问题,由于传感器像元尺寸的限制,当数据混杂现象在影像序列中存在时,使用差值算法对于数据拟合的有效性就会下降。实验证明,混杂现象越严重的影像需要更多的偏移对才能提高校正精度,因此在具有足够的偏移影像对的条件下数据混杂现象可以通过求均值被克服。

5.实验部分

5.1模拟实验:

模拟实验数据是由线性差值获取的,模拟数据完全满足了算法假设。并且由于是模拟数据,相邻帧之间的偏移量是可以进行严格控制的。对模拟数据,能够有很好的表现,即使加上了高斯噪声,模拟数据依然有比较好的表现效果。

通过降采样操作对数据进行模拟,降采样操作也可以在影像相邻帧之间很好的控制偏移量。

image

5.2真实数据实验:

真实数据集为128*128  InSb FPA camera (Amber Model AE-4128) operating in the 3 ~ 5 μm 波段范围,对于真实数据集,使用3*3的大小的滤波核进行平滑滤波,滤波后再进行影像偏移估计。使用三个真实数据集进行处理在垂直方向获取到了75-100个偏移影像对,10-20个水平方向偏移影像对可以得到有效的校正矩阵,第一个数据集中有垂直方向179个影像对,水平方向上有15歌影像对。误差阈值设置为0.005,

image

figure 8.为原始红外影像数据集,figure 9.为校正后的红外影像,figure 10. 校正矩阵C,从校正结果来看,影像校正后得到了比较好的校正结果。

image

上图是数据集2的校正结果。数据集2有500帧影像,对于数据集2有139个垂直偏移影像对,47个水平偏移影像对,观察到影像底部一些帧的影像存在非静态的叶子,因此在校正过程中存在一定的误差。

高光谱影像非均匀性校正笔记

  引言:
  对于推扫式高光谱传感器往往会出现非均匀性问题,出现影像非均匀性的原因主要在于焦平面传感器探元阵列响应存在不一致性,另外在相机通光口出现的毛刺,灰尘或冷凝的水汽等也会造成影像差出现非均匀性,对于一个响应为线性的传感器来说非均匀性校正通常包含一个乘性噪声和一个加性噪声,而对于响应非均匀的传感器来说就需要高阶的因子进行校正了,一般来说传感器的响应随着光强度的曾强都是呈现线性变化的特征。传感器的加性因子主要是系统按电流,在实际测量过程中关闭传感器的通光口,获取的均匀数据就可以当作是系统按电流,也就是校正过程中的加性因子。
  一般来说,为了对传感器的非均匀性进行校正,传感器都会在实验室进行定标,然而由于成像环境的差异如,灰尘的影响,冷凝作用造成水汽的影像,传感器焦平面和入射视场由于震动产生了便宜等,使用实验室定标结果进行校正会存在一定的误差,通常使用实验室定标结果直接对图像进行校正后依然能够看到比较明显的非均匀性现象如图:

image
实验室定标结果
  因此除非传感器内部安装了稳定的定标光源,否则只用实验室定标数据对影像进行非均匀性校正是不够的,必须要通过影像重新计算非均匀性校正系数,对影像非均匀性进行校正。
  通常可以将辐射定标和非均匀性校正结合起来,辐射定标是建立传感器减去背景噪声后的响应和辐亮度之间的关系:
eq(1)
image
eq(2)
image
可以将方程1转换为方程2,方程2中bi表示响应系数,di表示系统暗电流影像。
均值法非均匀性校正:
  对于非均匀性问题的校正,最常用的方法为均值法,均值法的非均匀性校正系数的求取方法为:
eq(3)
image
  其中image为整个影像的均值,image为第i个像素位置的列均值,通过均值可以获取第i个位置的非均匀性校正系数,采用此种方法进行非均匀性校正就必须假设影像上地物分布均匀,这样均值才具有统计意义,如果影像上地物在不同列上差别比较大,则此种校正方法会存在比较大的误差,因此采用此种方法进行校正过程中最好是选取如大片操场,均匀水体等比较均匀的地物,然而在水体的选取上需要注意,如果影像分辨率过高,则水中波浪能够区分波浪的光谱和水体光谱特性有比较大的差异,会产生一定的误差。
image
中值比值法非均匀性校正:
  此种方法的假设前提为:扫描行上相邻像元往往是同种地物,光谱差异比较小。根据这个假设可知,同一波段相邻地物响应的比值应该是接近于1的,对于多个影像扫描行,则具有统计规律,影像扫描行上相邻像元比值的中值是接近于1的,采用中值而非均值是为了避免可能在边界上的像素的影响,在同一扫面行上正好处于边界上的像素应该是比较少的,因此对于中值的影响要小于对于均值的影响。
eq(4)
image
则此时第i个像元的校正系数为:
eq(5)
image
其中image为扫面行上相邻像元比值的中值,在实际处理过程中一般是首先求出中心像元校正系数,因为在进行累乘的过程中由于image引起的误差可能会随着扫描行长度的变换累加,这样造成误差累计,为了减小误差的累积采用首先计算出中心像素的校正系数然后采取如下公式计算中心像素左右两端像素的校正系数:
eq(6)
image
其中公式6中的v于公式5中的b的意思相同都是表示校正系数。
对于同样的假设,有学者提出了不同的求解方式能够更好的进行校正,上述公式求解出了校正系数之后直接就进行校正,而并没有考虑到对校正系数的误差进行处理:
结合公式2、4可得:
eq(7)
image
对于公式5,可以得到如下的函数:
eq(8)
image
对于公式6我们可以知道,当fi最小时获取最好的校正系数,实际上到公式8和公式5中求取的系数并没有本质上的区别,而在下一步对于整个扫面行所有系数求取过程中公式8采用如下方式求取:
eq(9)
image
采用公式9的方法求取整个校正系数差异最小值,采用这种方法求解能够较好的对数据进行处理避免误差累积。
imageimage
校正前后影像比较
光谱空间中值比值法:
  对于以上方法,有学者从统计角度出发,发现对于高光谱影像,谱段之间的相关性要远远高于扫描行上相邻像素的相关性,影像谱段之间的比值也更加稳定:
image
上图蓝色的线为扫描行上空间邻接像元的比值,红色的线为邻接光谱波段的比值,可以看出光谱波段比值的稳定性要远大雨空间邻接像元,因此选用波段和空间邻接像元比值共同作为参考对影像进行处理:
eq(10)
image
其余的求解方式与空间中值比值法并没有什么差异,得到的校正结果为:
image
以左图为使用实验室定标数据进行非均匀性校正的结果,中间为使用空间光谱邻接比值校正的结果,右边为使用空间邻接比值校正结果,从图上可以看到直接使用实验室定标数据进行校正后依然有比较明显的非均匀性现象,而经过校正后非均匀性现象得到明显的消除,后两种方法的可以得到比较好的校正效果,然而将图像进行PCA变换后可以比较明显的看出后两种校正方法的优劣:
image
通过变换后可以看出,影像非均匀性现象得到增强,左图可以看到明显的非均匀性现象,比较中间和右边的结果,可以看出右边结果不如中间的结果。
imageimage
左边三幅分为使用实验室光谱定标系数校正,使用空间光谱邻接比值相关校正,单独使用空间比值校正结果,右边两幅为使用后两种校正方法进行校正后影像PCA变换后后几个波段,理论上PCA变换后后几个波段应该表现为白噪声,而最后一幅影像依然有明显的条带,说明单独使用空间邻接关系并不能彻底校正影像的非均匀性。
参考文献:
Leathers R, Downes T. Scene-based nonuniformity correction and bad-pixel identification for hyperspectral VNIR/SWIR sensors[C]//Proc. IEEE IGARSS. 2006: 2373-2376.
Leathers R, Downes T, Priest R. Scene-based nonuniformity corrections for optical and SWIR pushbroom sensors[J]. Optics express, 2005, 13(13): 5136-5150.
Fischer A D, Thomas T J, Leathers R A, et al. Stable scene-based non-uniformity correction coefficients for hyperspectral SWIR sensors[C]//Aerospace Conference, 2007 IEEE. IEEE, 2007: 1-14.

较新的博文 较旧的博文 主页