具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象(例如第一修正值和第二修正值分别表示为不同的修正值,其他类似),而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请实施例中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个***中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请实施例中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请实施例方案的目的。
需要说明的是,虽然本申请实施例以在微创手术中获取去雾图像这一应用场景,说明了如何采用本申请方法对图像进行去雾,但是本领域的技术人员可以根据本申请实施例的公开内容在其他的应用场景下实施本申请实施例的图像处理方法,以便于对图像进行去雾。本申请实施例所披露的发明原理至少包括通过对原始图像流中所有的原始图像进行识别判定,筛选出有雾的原始图像,并且对有雾的原始图像进行去雾处理,得到去雾图像,并将去雾图像形成去雾图像流,用于输出显示,以供操作者进行观察。
本申请实施例提供的部分方案还涉及人工智能(Artificial Intelligence,AI)等技术,具体通过如下实施例进行说明:
其中,AI是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
AI技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互***、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
在了解本申请之前,需要清楚的是,由本申请的背景技术可知,本申请的技术方案主要是针对于微创手术这一应用场景,但是,本申请并不仅限于这一应用场景,在其他的应用场景中,遇到类似的技术问题时,也可以采用下述技术方案。
下面仅以在微创手术中获取去雾图像这一应用场景,对本申请的技术方案进行详细说明。具体的,本申请的实施例提供一种图像处理方法,如图1所示,所述方法包括:
步骤S100:获取候选目标图像,所述候选目标图像中包括候选目标对象;所述候选目标图像,基于原始图像获取。
具体的,在本申请技术方案中,原始图像是指在进行微创手术时获取的手术图像。其可以是采用任意设备拍摄出的图像,也可以是基于视频截取出的图像,对其来源不做任何限制。例如:在微创手术获取去雾图像这一应用场景中,获取原始图像的方式为,基于腹腔镜获取视频,从视频中得到手术图像流(也即原始图像流)。在本申请的一个实施例中,可以对原始图像流中的所有原始图像进行去雾,获取多个去雾图像依次输出,形成去雾图像流,供操作者进行观察。
需要清楚的是,在本申请中候选目标图像是基于原始图像获取的。在微创手术获取去雾图像这一应用场景中,由于在微创手术中,会用到各种各样的医疗器械,例如止血器或者超声刀等。为了便于后续从原始图像中识别出超声刀,可以对原始图像进行预先处理,也即基于原始图像获取候选目标图像。其中,候选目标图像可以是以任意种方式通过原始图像处理得到的,例如:对原始图像进行裁剪,以使每个候选目标图像中仅具有一个候选目标对象,所述候选目标对象包括各种进行微创手术时的医疗器械;或者,将原始图像转换成为二值图像,将二值图像作为候选目标图像,以使候选目标图像中的医疗器械特征更加明显,从而便于识别。当然,在本申请的一些实施例中,也可以不对原始图像做任何处理,直接将原始图像作为候选目标图像。
在本申请一个具体的实施例中,所获取的原始图像如图2所示。为了基于原始图像获取候选目标图像,将原始图像输入腹腔镜医疗器械的目标检测模型中,当原始图像中出现医疗器械时,会得到医疗器械在图像中的方框定位坐标bbox[x,y,w,h],其中x,y为预测框体左上角的坐标信息,w,h为预测框体的宽和高,从而得到候选目标图像,其如图3所示。其中,腹腔镜医疗器械的目标检测模型可以预先训练得到,其工作流程如下所示:
1)加载输入的原始图像,如图2所示;
2)对输入的原始图像进行预处理;
3)加载训练后的目标检测模型;
4)利用该模型对预处理后的图像进行推理;
5)对输出进行后处理以获得最终边界框、概率和标签;
6)根据输出的最终边界框将器械裁出,如图3所示。
由于基于候选目标对象对原始图像进行裁剪,而获取候选目标图像为较为成熟的现有技术,因此不做过多赘述。
由背景技术可知,在微创手术中,只有使用了超声刀切割人体组织或器官,才会产生烟雾,干扰操作者的视线,即采集到包括烟雾的视频或图像。因此,在微创手术获取去雾图像这一应用场景中,容易联想到的是,当原始图像中未出现超声刀时,则说明该原始图像中一定无雾,对该图像进行去雾处理的意义并不大;并且,在进行微创手术的整个过程中,大部分获取的原始图像中都是无超声刀的。本申请方法在对多个原始图像(也即原始图像流)进行处理时,只处理具有超声刀的原始图像(也即可能有雾的原始图像),相较于对多个原始图像(也即包含超声刀的原始图像和不包含超声刀的原始图像)都进行去雾处理,此种方式能够大大的降低计算机的数据处理量。由前文可知,在微创手术获取去雾图像这一应用场景中,最终所获得的去雾图像是用于输出显示的,因此,较快的图像处理速度,能够降低视频(也即输出的手术图像流)延迟,避免较高的视频延迟影响操作者的操作。基于此,在微创手术获取去雾图像这一应用场景中,本申请方法还需要对原始图像中出现的医疗器械进行确定,判断其是否为超声刀。具体的,在本申请中,可以采用任意的方法来判断候选目标图像中的候选目标对象是否为超声刀。例如:可以直接通过人工智能模型,对候选目标图像中候选目标对象进行特征提取,以确定所述候选目标对象是否为超声刀。由于人工智能模型通过特征提取识别候选目标对象为成熟的现有技术,因此不做过多赘述。
但是,考虑到人工智能模型需要耗费庞大的计算资源才能运行,基于人工智能模型识别超声刀的方案需要强大的算力设备支持,实施成本较高。由此,为了更加简便的识别超声刀,本申请的另一个实施例中提供了基于图像处理和计算来识别超声刀的方案,其方法如步骤S200所示,具体的,该步骤的基本原理为,医疗器械一般都属于银白色或者白色的金属制品,而人体的器官或者组织一般为血色或者肉色,在腹腔镜光源的照射下,医疗器械和人体的器官或者组织所反射出的光的颜色是不同的,也就是说,在同一个图像中,医疗器械和人体的器官或者组织的亮度是不同的,由此,可以基于同一个图像中,不同对象的亮度差异对医疗器械进行识别区分。
步骤S200:基于所述候选目标图像,获取所述候选目标对象的状态信息;所述状态信息至少包括所述候选目标对象的轮廓数量;所述候选目标对象的轮廓基于所述候选目标图像的亮度信息确定;
需要清楚的是,如图4所示,图4为候选目标对象为超声刀的候选目标图像。超声刀具有钳子状的刀头和连接刀头的杆,由于超声刀的特殊构造,钳子状的刀头外表面其反光能力较差(也即类似于肉色),而钳子状的刀头内表面与连接刀头的杆其反光能力较强。当未使用超声刀对人体器官或者组织进行切割时,候选目标图像中会出现一块较为明亮的轮廓(也即连接刀头的杆反光所形成的轮廓),当使用超声刀对人体器官或者组织进行切割时,超声刀的钳子状刀头张开,候选目标图像中会出现两块较为明亮的轮廓(也即连接刀头的杆和钳子状的刀头反光所形成的轮廓)。因此,当候选目标图像中出现两个轮廓时,基本可以判定在使用超声刀,也即需要当前的目标图像进行去雾处理。
需要清楚的是,彩色图像其像素点一般具有多个通道像素,每个通道像素所对应的像素值一般为0至255,而黑白图像的像素点只有一个通道,其像素值一般为0或者1,因此,相对于彩色图像来说,计算机提取黑白图像的轮廓时,处理的数据量较小,并且组成轮廓的像素值容易确定,例如:像素值为0或者像素值为1组成的轮廓,因此,在本申请的另一个实施例中,为了使得计算机能够对轮廓的识别结果更加快速和准确,可以将彩色的候选目标图像转换为黑白图像(也即二值图像),当然,基于上述的原因,在本申请的其他实施例也可以转换为其他图像,例如:灰度图像或者将候选目标图像转换至颜色空间,基于颜色空间中的亮度通道获得候选目标对象的轮廓信息。
在本申请的一个具体的实施例中,提供一种将彩色图像转换为二值图像,并基于二值图像,获取所述候选目标对象的状态信息,可行的方法:
具体的,所述基于所述候选目标图像,获取所述候选目标对象的状态信息,的步骤包括:
步骤S210:获取所述候选目标图像各个像素点的灰度值。
需要清楚的是,获取彩色图像像素点的灰度值的方法是多种多样的,在本申请中,可以采用任意方法来获取候选目标图像各个像素点的灰度值,例如:本技术领域中常用的浮点算法、整数方法、移位方法、平均值法、最大值法、最小值法或者取绿色法等。
步骤S220:对各个像素点的灰度值进行至少一次修正后,获取各个像素点的修正值。
需要清楚的是,对各个像素点的灰度值进行修正的主要目的是,为了降低后续获得的二值图像的噪声或者增加图像的对比度,从而使得获得的二值图像的轮廓更加明显,当然在本申请的其他实施例中,可以跳过这一步骤,直接执行下一步骤,或者在本申请的另一个实施例中,可以不包括此步骤。
希望强调的是,在本申请的实施例中,可以采用任意的修正方法对对各个像素点的灰度值进行修正,以降低后续获得二值图像的噪声或者提升其对比度,例如:采用线性滤波中的均值滤波、方框滤波、高斯滤波,或者采用非线性滤波中的中值滤波和双边滤波进行修正降噪。
在本申请一个具体的实施例中,步骤S220,包括:基于各个像素点的灰度值,获取各个像素点的第一修正值,所述第一修正值包括:
Data1 i,j=i nv I-I i,j
其中,Data1 i,j为坐标为(i,j)的像素点的第一修正值,i nvI为反灰度值,所述反灰度值取值为255,I i,j为第i行第j列像素点的灰度值。需要清楚的是,一般情况下,灰度值的数值范围为0至255,其中255代表白色,而0代表黑色,假设像素点A的灰度值为200,像素点B的灰度值为55,则像素点A的颜色偏白,像素点B的颜色偏黑,基于本申请所获得像素点A的第一修正值为55,获得像素点B的第一修正值为200,此时,像素点A和像素点B的颜色发生反转,也即像素点A的颜色由白变黑,而像素点B的颜色由黑变白。需要强调的是,在本申请中获取各个像素点的第一修正值,其并无实际意义,计算其主要的目的是为了获取后续的第三修正值以增强后续获得二值图像的对比度。
将所述各个像素点的第一修正值进行灰度变换,获取各个像素点的第二修正值,其中,灰度变换包括:伽马变换或者对数变换。获取第二修正值的目的是为了消除图像噪声。
将所述各个像素点的第二修正值进行指数变换,获取各个像素点的第三修正值,其中,指数变换可以为高斯变换或者傅里叶变换等,获取第三修正值的目的是为了进一步的降低图像噪声,增加图像的对比度。
在本申请一个具体的实施例中,基于计算机实现步骤S220的方式如下:
1)获取候选目标图像的行数和列数(rows,cols);
2)初始化sigmaX为0,创建rows*cols大小的二维数组I和inv_I用于存储输入图像中每个像素的灰度值和反灰度值,创建一个大小为rows*cols*1的三维数组Mast用于存储颜色修正矩阵;
3)对于每个像素点(i,j),计算其灰度值Ii,j,并将其反灰度值invI的第(i,j)个像素点设置为255,表示对应像素点的反相值;
4)计算每个像素点的第一修正值Data1i,j,并将其保存在Mast中;
5)对Mast应用高斯模糊进行平滑处理,窗口大小为41*41,sigmaX为0;
6)创建一个大小为rows*cols*3的三维数组用于存储输出图像;
7)对于每个像素点(i,j)进行伽马变换,计算第二修正值Data2i,j,并将其保存在Mast中;
8)对于每个像素点的通道(k),进行指数变换,对第二修正值Data2i,j修正,获取第三修正值dsti,j[k],将结果存储在输出图像dst[i,j][k]中;
在本申请一个具体的实施例中,可以通过如下公式获取第三修正值:
其中,srci,j[k]表示像素点(i,j)的通道k的像素值。
需要清楚的是,在本实施例中,计算第三修正值的目的就是为了增强后续获得的二值图像的对比度,以降低其噪声。具体的,其原理为通过第三修正值将原先较黑的区域变得较白,将原先较白的区域变得较黑,以降低噪声。
具体的,还是以上述的像素点A和像素点B为例,经过伽马变换后,获取像素点A的第二修正值为50,像素点B的第二修正值为200,也即在伽马变换中默认常数系数均取1,在本申请的其他实施例中伽马变换中默认常数系数可以根据需要取其他任意值,最后经过下文中的指数变换后,获得像素点A的第三修正值为178,像素点B的第三修正值为90。
当然,还需要清楚的是,在本申请的一个实施例中可以直接不计算第一修正值,直接基于像素点的灰度值计算第二修正值和第三修正值。以上述的像素点A和像素点B为例,直接基于像素点的灰度值计算第二修正值和第三修正值,所获得像素点A的第三修正值为218,像素点B的第三修正值为26。此时,第三修正值将原先较黑的区域将更加显著地变黑,较白的区域将更加显著地变白。通过此种方式可以使后续获得的二值图像中的细节更加突出,并增强二值图像的视觉效果。这种调整可以用于改善图像的视觉感知,使得图像的亮度分布更加均衡。容易联想到的是,在实际操作过程中,可以根据自身需求,来选择获取何种修正值。
步骤S230:基于各个像素点的修正值,获取各个像素点的目标值,所述目标值为0或者1;基于各个像素点的目标值,获取与所述候选目标图像对应的二值图像;基于所述二值图像,获取所述候选目标对象的状态信息。
需要清楚的是,在本申请的其他实施例中,也可以将目标值设定为其他值,对此不做任何限制。
由前文可知,各个像素点的修正值可能是经过多次修正后获得的,而本申请实施例中“基于各个像素点的修正值,获取各个像素点的目标值”中的修正值是指,最后一次修正所获得的修正值。
在本申请的一个实施例中,将指数变换后得到的dst[i,j][k]图像进行阈值法提取超声刀特征,将图像中的像素值转换为二值图像,使得像素值为对应的目标值,在本实施例中将第三修正值大于等于230并且小于等于255的像素点的目标值设置为1,而其他像素点的目标值则设置为0。
在本申请的其他实施例中,可以按照需求将不同于上述范围的第三修正值的像素点的目标值设置为1或者0。
具体的,如图6所示,其为经过上述步骤修正后所获得的二值图像,而图5为未经过上述步骤修正后所获得的二值图像,通过对比可知,图5的噪声较大。
步骤S300:若所述轮廓数量为二,且所述姿态信息符合预设条件,则将所述原始图像作为目标图像。
需要清楚的是,在进行微创手术时,由于使用的医疗器械较多,以轮廓的数量仍然无法精准的确定该医疗器械是否为超声刀。如图2和图4所示,由于在使用超声刀时,超声刀的刀头需要与人体器官或者组织相接触,而连接超声刀头的杆与操控装置相连接受操控者的控制,因此,在图像中表现为倾斜的状态。基于此,为了进一步的准确的识别候选目标对象是否为超声刀,可以通过所述候选目标对象的姿态信息,来判定所述候选目标对象是否为超声刀。
由前文可知,超声刀在使用时,其在图像中的表现为倾斜状态,如图4所示,超声刀本身也为线条状结构,其刀头和连接刀头的杆由于构造原因本身也处于高亮状态,由此可以考虑基于超声刀首尾两个部分高亮的轮廓,以及两个轮廓连线为倾斜的姿态,确定候选目标对象是否为超声刀。另外,本申请获取目标点的目的在于以点代面,即两个轮廓区域直接连线存在无数种可能性,由此,采用相同的方式基于两个轮廓获取目标点,代替两个轮廓进行连线,可以使得连线结果更能表现出目标对象本身的倾斜姿态。
由上文可知,在本申请一个实施例中,所述候选目标对象的姿态信息至少基于各个目标点的连线确定,目标点与轮廓一一对应;一个轮廓的目标点可以为该轮廓的中心、重心、质心、最小外接圆的圆心或者最大外接圆的圆心等。预设条件可以为所述候选目标对象位于所述原始图像的左侧区域(也即左手持握所述候选目标对象),且所述连线的斜率为正;或者,所述候选目标对象位于所述原始图像的右侧区域(也即右手持握所述候选目标对象),且所述连线的斜率为负。
在本申请的另一个实施例中,可以预先设置所述候选目标对象位于所述原始图像的位置,例如:若操作者操作习惯为左手时,则可以预先设置默认所述候选目标对象位于所述原始图像的左侧,若操作者操作习惯为右手时,则可以预先设置默认所述候选目标对象位于所述原始图像的右侧。
当基于步骤S300确定目标图像(也即有雾的原始图像)后,本申请还需要对目标图像进行去雾处理,也即,还需要执行步骤S400。
步骤S400:将所述目标图像进行去雾处理后,获取去雾图像,所述去雾图像,用于输入显示设备。
具体的,在本申请中,可以采用任意一种方法或者基于某种现有软件对目标图像进行去雾处理,以获得去雾图像。上述的去雾方法包括但不仅限于暗通道去雾算法、基于导向滤波的暗通道去雾算法、Fattal的单幅图像去雾算法、Tan的单一图像去雾算法、Tarel的快速图像恢复算法和贝叶斯去雾算法等。
为了使得本申请的图像处理方法,能够适用于背景技术中的微创手术,也即,需要在短时间对大量的彩色图像进行去雾处理,获取去雾图像后进行输出。在本申请的一个实施例中,提出一种具体的图像去雾方法,具体的,所述将所述目标图像进行去雾处理后,获取去雾图像,包括:
步骤S410:基于原始图像(也即目标图像),分别获取灰度图像、透射率估计图像和暗通道图像。
具体的,基于原始图像获取暗通道图像包括:
1)将原始图像由三维彩色图像转化为四维tensor格式,其中,四维tensor 格式的第二维为单维数据,从而能够适用于图形处理器(Graphics Processing Unit,GPU)对四维tensor格式图像中的第二维进行最小通道值进行提取,相较于现有技术中采用中央处理器(Central Processing Unit,CPU)对三维彩色图像中的三维数据进行处理,CPU除了需要进行图像处理之外,还要负责计算机各个程序各个进程的调度和计算,而GPU则只负责图像显示的渲染处理,承担的计算任务较为单一,具有更强的算力余量,可以支持对图像的快速处理,从而提升图像处理速度,而通过将三维彩色图像转化为四维tensor格式正是为了使其可以适应GPU处理,获得的四维tensor格式图像如图7所示,
具体的,基于原始图像,获取暗通道图像,其公式如下:
其中,(x,y)表示像素点所对应的坐标,c表示像素点所对应的像素通道,表示取坐标为(x,y)像素点的三个通道中的最小值。
2)获取到四维tensor格式图像第二维度的三个通道中最小值为min_channel,使用最大池化滤波及取反获得最小值,即为暗通道值,具体公式如下所示:
其中,dark_img(x,y)表示滤波后得到的暗通道图像在坐标为(x,y)处像素点的像素值,k为滤波核的大小,表示三通道彩色图像在坐标为(x,y)处像素点的最小通道值,/>表示对滤波核覆盖的区域进行取最大值操作,并对结果取反,获取最小值。其中,滤波核k可以取任意值,滤波滑动步长也可以取任意值,在本申请的一个具体的实施例中滤波核K取为15,滤波滑动步长为1,获得的暗通道图像如图8所示。
具体的,在本申请中基于原始图像获取灰度图像和透射率估计图像包括:
对原始图像的每个通道进行归一化操作,得到归一化图像im_norm,选择归一化图中每个像素点的三个通道中最小的一个像素值,得到一个新的灰度图像im_norm_min_channel,使用Cuda暗通道滤波算子对灰度图像im_norm_min_channel进行暗通道提取得到暗通道图像dark_im_norm,最后通过暗通道图像dark_im_norm得到透射率,透射率估计图像如图9所示。其详细公式步骤如下所示:
其中,ω为调整透射率估计结果的参数,在本实施例中ω取0.95,img_tensor为原始图像,A为大气光照强度,im_norm为归一化图像,im_norm_min_channel为归一化后每个像素点钟的三个通道中的最小值,dark_im_norm为经过最大池化操作的归一化最小通道像素的负数,transmission为计算得到的透射率。
步骤S420:基于所述暗通道图像,获取大气光照强度。
具体的,基于所述暗通道图像,获取大气光照强度,包括:
首先,获取四维tensor格式图像的高度和宽度,计算其像素点总数imsz;然后,根据总像素点总数计算用于计算大气光照强度的像素点数numpx,numpx默认取总像素数点的千分之一,最小值为1。将四维tensor格式图像和暗通道图像重塑成一维向量,其中darkvec表示暗通道图像的一维向量,imvec表示四维tensor格式图像的一维向量,每个像素点对应一个三维向量(R,G,B)。通过对暗通道图像一维向量排序,得到亮度最低的像素点索引indices,取其中的最后numpx个像素点作为用于计算大气光照强度的像素点索引。根据用于计算大气光照强度的像素点索引indices,从四维tensor格式图像的一维向量中提取对应的像素值,将这些像素值加和得到atmsum,最后将atmsum除以用于计算的像素点个数numpx,得到大气光照强度向量A。其中,atmsum和A都是三维向量(R,G,B)。过程公式如下所示:
darkvec=reshape(dark_img,imsz)
imvec=reshape(img_tensor,imsz,3)
indices=argsort(darkvec)
indices=indices[imsz-numpx:]
atmsum=01*3
Forind∈[1,numpx)
atmsum=atmsum+imvec[indices[ind]]
A=atmsum/numpx
其中,darkvec是暗通道图像的一维向量,imvec是四维tensor格式图像的一维向量,indices是用于计算大气光照强度的像素点索引,atmsum是这些像素点对应的像素值加和得到的向量,A是大气光照强度向量。
步骤S430:基于所述透射率估计图像和所述灰度图像,获取滤波图像;
在本申请中,可以用任意的方式获取滤波图像,例如:采用线性滤波中的均值滤波、方框滤波、高斯滤波,或者采用非线性滤波中的中值滤波和双边滤波等。
需要清楚的是,在本申请的一个实施例中,以引导滤波的方式获取滤波图像。引导滤波(GuidedFilter)是一种基于导向图的局部滤波方法。引导滤波的目的是在保持图像边缘信息的同时,实现图像的平滑处理。在引导滤波中,有两个输入图像:一个是需要处理的图像(也即透射率估计图像),另一个是引导图像(也即灰度图像)。引导图像一般用于指导处理图像的平滑,其核心思想是利用引导图像的信息来对需要处理的图像进行平滑处理。
在本申请一个具体的实施例中,步骤S430中,所述基于所述透射率估计图像和所述灰度图像,获取滤波图像,包括:
步骤S431:基于所述透射率估计图像,获取第一均值图像;
步骤S432:基于所述灰度图像,获取第二均值图像;
步骤S433:基于所述第一均值图像和所述第二均值图像,进行引导滤波,获取滤波图像。
需要清楚的是,在本实施例中,与现有技术相同,可以将透射率估计图像或者灰度图像每个像素点的像素值替换为其邻域像素点的均值来减少噪声并平滑图像,以获得均值图像。具体的,该方法采用卷积的方式逐个对像素点在某个方框范围内的平均像素值进行计算,以平均像素值代替原先的像素值,实现滤波的目的。但是,为了提升获取均值图像时的计算速度,在本申请的另一个实施例中,所述基于所述透射率估计图像,获取第一均值图像,包括:对所述透射率估计图像进行水平方向的差分运算和垂直方向的差分运算,获取第一均值图像;所述基于所述灰度图像,获取第二均值图像,包括:对所述灰度图像进行水平方向的差分运算和垂直方向的差分运算,获取第二均值图像。
具体的,在本实施例中,水平方向的差分运算和垂直方向的差分运算具体操作步骤如下:
1)张量的水平累加:
对输入图像(也即透射率估计图像或者灰度图像)进行水平方向的差分运算,也就是对输入图像中每一行相邻的像素进行差分运算,得到一个新的张量。其中,r表示差分运算的半径,也就是差分运算时考虑的相邻像素的个数。具体实现过程如下:
对输入图像张量沿着水平方向(也即x方向)进行累加操作,得到第一累加张量;
需要清楚的是,由于采用累加张量的方式无法对图像的边缘进行处理。因此,还需要将累加张量划分为左边部分、中间部分和右边部分从而对其边缘进行处理,具体的,其处理过程如下:
将第一累加张量划分为左边部分,该部分的大小为(batch_size,height,width,r,channels),其中,batch_size表示输入图像张量的维度,height表示输入图像张量的高,width表示输入图像张量的宽,channels表示输入图像张量,channels表示输入图像张量的像素通道;
将第一累加张量划分为中间部分,该部分的大小为(batch_size,height,width,height-2*r-1,channels)。该部分的计算方式是:从第一累加张量的第2*r+1个位置开始,每个位置减去它前面的第2*r+1个位置的值,得到差分张量。需要注意的是,为了保证middle张量的大小不变,需要将差分张量的前2*r个位置舍去,后面保留的部分就是中间部分;
将第一累加张量划分为右边部分,该部分的大小为(batch_size,height,width,r,channels)。该部分的计算方式是:从第一累加张量的倒数第二个位置开始,往前数2*r个位置,再从这个位置开始往后数r个位置,将这段区间内的值相减,得到差分张量。需要注意的是,为了保证right张量的大小不变,需要将差分张量的前r个位置舍去,后面保留的部分就是右边部分;
将左边部分、中间部分和右边部分拼接起来得到水平方向的第一张量结果。
2)张量垂直累加:
对第一张量结果进行垂直方向(也即y方向)的差分运算,也就是对第一张量结果中每一列相邻的像素进行差分运算,得到第二累加张量。其中,r表示差分运算的半径,也就是差分运算时考虑的相邻像素的个数。具体实现过程如下:
对第一张量结果进行纵向的累加,得到第二累加张量;
将第二累加张量沿着纵向方向划分为三个部分,分别表示差分运算的左、中、右三个部分。
左边部分:从r行开始,向上取r+1行,即包含r+1行像素;
中间部分:从2*r+1行开始,到最后一行结束,中间包含第二累加张量中间的像素,不包括上面的r行和下面的r行;
右边部分:从最后一行开始,向上取r行,即包含r行像素;
将左、中、右三个部分沿着纵向方向拼接起来,得到最终的均值图像。
需要清楚的是,上述的两次差分操作,使用的是累加和的方式来计算方框(边长为r)内像素的总和,与卷积计算不同的是,其不是每次都重新计算方框内所有像素的总和,从而避免了大量的重复计算。在进行水平差分后,得到的是相邻两列(或行)的像素值之差,在进行一次垂直差分后,就得到了每个像素点上下(或左右)相邻半径为r的方框内像素总和之差,即该像素点的滤波后的像素值。
需要清楚的是,上述的差分方法进行水平方向上的差分运算和垂直方向上的差分运算并无先后顺序要求,也可以先进行垂直方向上的差分运算后,再进行水平方向上的差分运算。
具体的,在本申请中均值图像像素点的像素均值计算公式如下:
其中,Sxy表示以坐标为(x,y)的像素点为中心的半径为r的正方形滤波窗口,N表示滤波窗口内的像素数,mean(x,y)表示坐标为(x,y)的像素点的均值,M(i,j)表示滤波窗口内坐标为(i,j)的像素点的像素值。
由上文可知,本申请的该实施例基于方框滤波,采用水平方向差分运算和垂直方向差分运算的方式,间接的计算出了方框内像素的平均值,其所取得的效果与直接使用卷积核进行卷积平滑处理的效果类似,相对于采用卷积方式的顺序处理,采用水平方向的差分运算和垂直方向的差分运算能够并行处理,极大的提升了图像的处理速度,降低图像处理时间,进而降低在微创手术获取去雾图像这一应用场景下的图像输出延迟。
进一步的,基于第一均值图像和第二均值图像,进行引导滤波,获取滤波图像,其具体的操作步骤如下:
1)计算协方差:
其中,I是指第一均值图像,P是指第二均值图像。
2)计算方差和系数:
b(x,y)=meanP(x,y)-a(x,y)*meanI(x,y)
3)在得到参数a(x,y)和b(x,y)的估计之后,可以使用它们来计算最终的输出q。这可以通过对输入图像(也即灰度图像)应用线性滤波器来完成,其中滤波器权重由估计的参数a和b决定。具体而言,对于每个像素(i,j),滤波器输出q(i,j)计算如下:
即可获得滤波图像,获取的滤波图像如图10所示。
步骤S440:基于所述滤波图像,获取透射率;
步骤S450:基于所述原始图像、所述大气光照强度和所述透射率,获取所述去雾图像。
在本申请的一个实施例中,步骤S450,包括:
步骤S451:建立空张量,所述空张量与原始图像的尺寸相同;
步骤S452:获取所述原始图像的各个像素点的各个通道像素值;
步骤S453:基于各个像素点的各个通道像素值、所述透射率和所述大气光照强度,获取各个像素点的各个通道像素的归一化值;
步骤S454:将各个像素点的各个通道像素的归一化值,转换至所述空张量中,得到去雾图像。
需要清楚的是,一般的彩色图像其均具有多个像素通道,例如:常见的RGB彩色图像则具有三个通道,也即一个像素点对应三个通道像素值。在本实施例中,所述获取原始图像的各个像素点的各个通道像素值是指:获取原始图像中每个像素点在所有通道的像素值。
在本申请的一个实施例中,步骤S453可以通过以下公式实现:
其中,I′ijc是原始图像中像素点(i,j)上通道c像素的归一化值,Iijc是原始图像中像素点(i,j)上的通道c的像素值,Ac是大气光照强度在当前通道c上的取值,t是该像素点的透射率,tx是任意一个小于1的正数;获取最终去雾后的图像结果,其如图11所示。
上述的图像处理方法,通过对原始图像进行识别判定原始图像中是否具有超声刀,来预测原始图像中是否起雾,基于对起雾的原始图像进行去雾后,得到去雾图像用于输出,从而在微创手术中,操作者使用超声刀时产生的烟雾,一定不会遮挡操作者手术操作时的观察视野。同时,在微创手术获取去雾图像这一应用场景中,获取的原始图像是众多的,本申请方法通过只对所有可能起雾的原始图像进行去雾,使得计算机在进行图像去雾处理时的数据处理量整体较小,相对于对所有的原始图像进行去雾,本申请方法能够降低后续输出图像流的延迟。
在介绍了本申请中的图像处理方法之后,接下来对本申请还提出的图像处理装置10进行具体介绍,如图12所示,该装置包括:
获取模块11,用于获取候选目标图像,所述候选目标图像中包括:候选目标对象;所述候选目标图像,基于原始图像获取;
处理模块12,用于基于所述候选目标图像,获取所述候选目标对象的状态信息;所述状态信息至少包括所述候选目标对象的轮廓数量以及所述候选目标对象的姿态信息,所述候选目标对象的轮廓基于所述候选目标图像的亮度信息确定;
以及,若所述轮廓数量为二,且所述姿态信息符合预设条件,则将所述原始图像作为目标图像;
以及,将所述目标图像进行去雾处理后,得到去雾图像;所述去雾图像,用于输入显示设备。
在本申请的一个实施例中,所述候选目标对象的姿态信息,至少基于各个目标点的连线确定,目标点与轮廓一一对应;一个轮廓的目标点为:该轮廓的中心、重心、质心、最小外接圆的圆心或者最大外接圆的圆心。
在本申请的一个实施例中,所述预设条件包括:所述候选目标对象位于所述原始图像的左侧区域,且所述连线的斜率为正;或者,所述候选目标对象位于所述原始图像的右侧区域,且所述连线的斜率为负。
在本申请的一个实施例中,所述获取模块11还用于,获取所述候选目标图像各个像素点的灰度值;所述处理模块还用于,对各个像素点的灰度值进行至少一次修正后,获取各个像素点的修正值;以及,基于各个像素点的修正值,获取各个像素点的目标值,所述目标值为0或者1;以及,基于各个像素点的目标值,获取与所述候选目标图像对应的二值图像;以及,基于所述二值图像,获取所述候选目标对象的状态信息。
在本申请的一个实施例中,所述处理模块12还用于,基于各个像素点的灰度值,获取各个像素点的第一修正值,所述第一修正值包括:
Data1 i,j=i nv I-I i,j
其中,Data1 i,j为第i行第j列像素点的第一修正值,i nv I为反灰度值,I i,j为第i行第j列像素点的灰度值;以及,将各个像素点的第一修正值进行灰度变换,获取各个像素点的第二修正值;以及,将各个像素点的第二修正值进行指数变换,获取各个像素点的第三修正值。
在本申请的一个实施例中,所述处理模块12还用于,若像素点的修正值大于等于230并且小于等于255,则所述像素点对应的目标值为1,否则为0。
在本申请的一个实施例中,所述处理模块12还用于,基于原始图像,分别获取灰度图像、透射率估计图像和暗通道图像;以及,基于所述暗通道图像,获取大气光照强度;以及,基于所述透射率估计图像和所述灰度图像,获取滤波图像;以及,基于所述滤波图像,获取透射率;以及,基于所述原始图像、所述大气光照强度和所述透射率,得到所述去雾图像。
在本申请的一个实施例中,所述处理模块12还用于,建立空张量,所述空张量与原始图像的尺寸相同;以及,获取所述原始图像的各个像素点的各个通道像素值;以及,基于各个像素点的各个通道像素值、所述透射率和所述大气光照强度,获取各个像素点的各个通道像素的归一化值;以及,将各个像素点的各个通道像素的归一化值,转换至所述空张量中,得到去雾图像。
在本申请的一个实施例中,所述处理模块12还用于,基于所述透射率估计图像,获取第一均值图像;以及,基于所述灰度图像,获取第二均值图像;以及,基于所述第一均值图像和所述第二均值图像,进行引导滤波,获取滤波图像。
在本申请的一个实施例中,所述处理模块12还用于,对所述透射率估计图像进行水平方向的差分运算和垂直方向的差分运算,获取第一均值图像;以及,对所述灰度图像进行水平方向的差分运算和垂直方向的差分运算,获取第二均值图像。
通过上述的图像处理装置10,通过对原始图像进行识别判定原始图像中是否具有超声刀,来预测原始图像中是否起雾,基于对起雾的原始图像进行去雾后,得到去雾图像用于输出,从而在微创手术中,操作者使用超声刀时产生的烟雾,一定不会遮挡操作者手术操作时的观察视野。同时,在微创手术获取去雾图像这一应用场景中,获取的原始图像是众多的,本申请装置通过只对所有可能起雾的原始图像进行去雾,使得计算机在进行图像去雾处理时的数据处理量整体较小,相对于对所有的原始图像进行去雾,本申请方法能够降低后续输出图像流的延迟。
在介绍了本申请中的图像处理装置10后,下面对本申请中的图像处理设备20进行介绍。具体的,在本申请中图像处理设备20,如图13所示,包括:存储器21和处理器22;其中,所述存储器21上存储有可执行代码,当所述可执行代码被所述处理器22执行时,使所述处理器22执行如上述任意一种实施例所述的图像处理方法。
通过上述的图像处理设备20,通过对原始图像进行识别判定原始图像中是否具有超声刀,来预测原始图像中是否起雾,基于对起雾的原始图像进行去雾后,得到去雾图像用于输出,从而在微创手术中,操作者使用超声刀时产生的烟雾,一定不会遮挡操作者手术操作时的观察视野。同时,在微创手术获取去雾图像这一应用场景中,获取的原始图像是众多的,本申请设备通过只对所有可能起雾的原始图像进行去雾,使得计算机在进行图像去雾处理时的数据处理量整体较小,相对于对所有的原始图像进行去雾,本申请方法能够降低后续输出图像流的延迟。
在介绍了本申请中的图像处理装置后,下面对本申请中的存储有计算机程序的计算机可读存储介质进行介绍。具体的,所述计算机程序被执行时能够实现如上述任意一种实施例所述的图像处理方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的方法,装置和设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
尽管已经示出和描述了本申请的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本申请的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本申请的范围由所附权利要求及其等同物限定。