具体实施方式
请参阅图1,图1是本发明处理岩芯照片的方法的步骤流程图。
所述处理岩芯照片的方法包括以下步骤:
步骤S101,在放置岩芯的箱体的四角设置箱体标记物,对已采集装箱的岩芯进行拍摄,获取岩芯照片;
在本实施方式中,现场拍摄岩芯照片时,在盛放岩芯的岩芯箱体的四角放置四个橙色的箱体标记物,如图2所示。而所述箱体标记物颜色并不限定于橙色,因为橙色较易识别,本实施方式中采用橙色的箱体标记物作为举例,具体实施时,本领域技术人员可以根据需要,或者根据数字图像分析的方便,采用其他颜色的箱体标记物。
步骤S102,将岩芯照片输入计算机、并读取到以相应的钻孔编号命名的文件夹中;
现场拍摄岩芯照片之后,将所述岩芯照片输入计算机,以钻孔编号创建并命名若干个文件夹,对于同一个钻孔获得的岩芯的照片,将其读取到以相应的钻孔编号命名的文件夹中。
步骤S103,将所述岩芯照片从RGB空间数据转换为YCbCr空间数据;
具体操作时,首先选择某一钻孔编号文件夹中的第一张岩芯照片,将所述岩芯照片数据读入到bitmap对象,然后采用DrawImage方法将所述岩芯照片显示在窗体上。
然后,将所述岩芯照片从RGB空间数据转换为YCbCr空间数据。
在本实施方式中,转换公式为:
Y=0.299R+0.587G+0.114B
Cb=0.564(B-Y)
Cr=0.713(R-Y)
其中R、G、B分别表示所述岩芯照片的红、绿、蓝分量;而Y是则是指亮度分量,Cb指蓝色色度分量,Cr指红色色度分量;所述转换公式中的参数可以根据实际需要设置,本实施方式仅以一种较优的转换参数举例。
由于通常岩芯照片的拍摄作业是在野外工作,相机采用的普通的数码相机,天气情况有时是太阳暴晒、有时是阴天,环境光变化相对大,导致照片的亮度和色度有很大的变化,从而对同一物体的RGB值在环境光下变化太大,不便于正确分析。而YCbCr空间则提供了一种将亮度分量/蓝色分量/红色分量分割开来的方法,所以在本步骤中将所述岩芯照片转换为YCbCr空间数据,可以免除环境因素对照片亮度的影响,使本发明处理岩芯照片的方法可以适用于各种不同的使用环境。
步骤S104,根据所述YCbCr空间中的色度分量,识别所述岩芯照片中的箱体标记物图像;
在本实施方式中,计算Cb分量的平均值,Cb分量显示如图3所示,并根据所述Cb分量的平均值与所述岩芯照片中的各个像素的Cb分量的大小差值,将所述岩芯照片的Cb分量转换为二值化图像,如图4所示。
具体地,可以采用以下公式计算Cb分量的平均值:
其中,Width为图像的宽度,Height为图像的高度,由所述岩芯照片的分辨率决定。
在计算出所述Cb分量的平均值后,采用以下公式判断所述岩芯照片的每一个像素,进行图像分割,将所述岩芯照片转换为二值化图像:
上述公式中的Image表示图像分割后的二值化图像的像素的取值。在所述二值化图像中可以通过搜索,识别出设置在岩芯箱体四个角的箱体标记物的坐标。
对于箱体标记物的颜色以及选取所述岩芯照片中的Cb分量,是结合了野外工作的环境和采取的岩芯矿物的颜色决定的,野外工作的背景大多趋近于黄色系或是灰色系或是青色的,植物趋近于绿色系,我们通过试验得到橙色的颜色在工作环境出现的概率比较低,而橙色在Cb分量是趋于暗的,由于橙色吸收蓝色,反射黄色和红色,因此,一般情况下是四个所述箱体标记物就会是在Cb分量显示中是四个暗斑,因此可以通过图像处理技术识别其坐标。Cb分量的平均值是指整个照片的平均值,转换二值化图像后,用灰度图像显示Cb分量就可以看到整个图像的亮度是差不多,只有几个所述箱体标记物占很小的面积趋于暗斑。
上述公式中的分割值
是经过大量试验统计得来的,通过对大量的照片进行处理试验,确定这一值的识别效果最好。本领域技术人员根据实际操作中的需要可设定不同于
的分割值。但需注意:如果我们加大分割值,得到的识别区域就会变小,有可能没有把标志物识别出来,如果减少这个分割值,那么可能把背景也错误识别出来了,造成我们识别结果失效。
对于上述箱体标记物的颜色,如果所述箱体标记物采用其他的颜色,则在本步骤中对所述岩芯照片中的箱体标记物图像的识别也可以采用另一个颜色分量Cr,而由于Y分量如前述代表亮度,对于分析识别来说是干扰因素,因此舍弃掉了。
如果采用Cr分量,那么理论上所述箱体标记物的最优颜色是RGB(0,255,255),也就是青色,但因为经常碰到的一些矿物例如花岗岩就是青色的,这样会对所述箱体标志物的识别造成干扰,所以采用橙色以及对应的Cb分量为较优的实施方案,本领域的技术人员可以根据做业环境的实际情况或者具体选择设置所述箱体标志物颜色,以及分析使使用的颜色分量。
在本实施方式中,经过上述二值化处理后,四个橙色箱体标记物以及一些背景干扰在图像分割后的二值化图像中的值为1,其余背景图像的值为0。
此时,搜索图像中的Blob(取值为1的像素聚集形成的连续像素块,即为暗斑),采用搜索图像中的每个像素点前后左右的8邻居,将值为1的互为邻居的像素点添加在一起形成一个集合,即为所述Blob。遍历整个岩芯照片,得到所有值为1的连续数据块(或称Blob)。
计算每个Blob的面积,将面积最大的四个Blob作为搜索结果,其余的作为背景干扰舍弃掉。
将所述四个面积最大的Blob的中心在图像中的位置,识别并记录为四个箱体标记物的坐标;进一步地,可以根据计算的箱体标记物的坐标,在所述岩芯照片的显示窗体中分别显示四个充填的圆形标志,以显示识别效果,便于人工校验是否岩芯箱体得四角都识别正确。
如果识别结果正确,则进入下一张照片识别工作。这里判断识别结果是否正确可以通过设置相应的判断标准来自动实现,并在识别正确时自动进入下一张照片识别工作,在不正确时告警;也可以让操作人员根据所述岩芯照片的显示窗体中分别显示四个充填的圆形标志的位置来判断,在操作人员判断识别结果不正确时,可以人工采用鼠标点击岩芯照片中岩芯箱体的四角获取四个角坐标,然后按下一张或快捷键F6进入下一张照片识别工作;
重复上述对箱体标记物识别步骤,识别该钻孔编号文件夹下的所有岩芯照片,将得到的照片四角坐标到保存到一个程序预先定义的数组中。
例如,一般逐个处理各个钻孔编号文件夹下的岩芯照片,一个钻孔编号可能会有几箱照片,举例说,我们处理钻孔1,钻孔1中有10箱岩芯,我们得到10张岩芯照片,那么程序依次读入每张照片,每张照片都进行图像处理,并获得每个岩芯照片中的四个箱体标记物的坐标,并依次显示识别结果,并将得到的照片四角坐标到保存到预定于的所述数组中。
步骤S105,将所述箱体标记物图像的连线所包围的范围内的图像截取为分析图片;
在本步骤中,根据上述识别到的每个岩芯照片中的四个箱体标记物的坐标,剪除了岩芯箱以外的无用背景,得到如附图5所示的处理后的分析图片。
步骤S106,根据所述岩芯照片所在的文件夹的钻孔编号,对每个分析图片进行重命名;
在一个具体实施方式中,通过程序计算同一钻孔编号的文件夹下分析图片的数量,进行检索并以文件名进行排序,得到每个分析图片文件的位置,最后组合在一起,将每个分析图片文件保存为形如“钻孔编号-第几箱-共几箱.jpg”的文件名格式。
步骤S107,根据所述分析图片的名称,对属于相同钻孔编号的分析图片汇总,采用PDF生成技术,生成岩芯照片报告。
作为一种具体实施方式举例,引用iTextSharp.net类库,运行程序,选择钻孔编号对应的文件夹,程序自动依次读取各个文件夹中的分析图片,插入分析图片,并插入对应的文件名,进行图像的放缩,在一张A4纸张放置4排,每排两张的岩芯照片,并加入页眉、页脚、页码和目录等内容,形成一个完整的岩芯照片报告。
因为在生成岩芯照片报告时,图像处理的数据量非常大,岩芯照片的分辨率又高,因此把计算量最大的部分留到程序的最后部分进行处理,就是在所有的箱体标记物坐标确认正确后,让计算机自动处理了,免得需要操作人员等待。
又因为采用PDF格式,即使照片张数很大,仍然能很流畅的打开和浏览PDF,避免了采用Word文本时,文件过大而导致不能打开的缺点。
作为本发明处理岩芯照片的方法的一种优选实施方式,在步骤S105之后,步骤S106之前,进一步包括以下步骤:按照预定的分辨率,对所述分析图片进行仿射变换。
采用以下仿射变换公式:
其中,a、b、c、d、e、f、g、h是仿射参数,(x0,y0)、(x1,y1)、(x2,y2)、(x3,y3)为识别的四个箱体标记物在原有照片中的坐标;(u0,v0)、(u1,v1)、(u2,v2)、(u3,v3)为处理后的矩形区域的坐标。
在本实施方式中,对所述处理后的矩形区域的坐标(u0,v0)、(u1,v1)、(u2,v2)、(u3,v3)采用(0,0)、(1298,0)、(1298,800)、(0,800),也就是将图像仿射变换为1298×800分辨率大小的图像,采用1298×800分辨率是由于现有岩芯箱的尺寸为86cm×53cm,由此图像的宽高比和岩芯箱的实际比例是一致的,另一方面,在插入PDF格式报告中后,可以满足打印清晰度的要求。
本领域技术人员可以采用其他方式,将所述分析图片进行仿射变换,转换为具有预定分辨率的图像。
通过对所述分析图片进行仿射变换,可以去掉岩芯照片时角度扭曲,提高岩芯照片报告的质量。
请参阅图6,图6是本发明处理岩芯照片的系统的结构示意图。
所述处理岩芯照片的系统包括:数据读取模块11、色彩转换模块12、图像识别模块13、图像截取模块14、重命名模块15和报告生成模块16。
所述数据读取模块11用于将岩芯照片输入计算机、并读取到以相应的钻孔编号命名的文件夹中,其中,所述岩芯照片中包括岩芯箱体以及设置在所述岩芯箱体四角的箱体标记物的图像;
所述色彩转换模块12用于将所述岩芯照片从RGB空间数据转换为YCbCr空间数据;
所述图像识别模块13用于根据所述岩芯照片的YCbCr空间数据中的色度分量,识别所述岩芯照片中的箱体标记物图像;
所述图像截取模块14用于将所述箱体标记物图像的连线所包围的范围内的图像截取为分析图片;
所述重命名模块15用于根据所述岩芯照片所在的文件夹的钻孔编号,对每个分析图片进行重命名;
所述报告生成模块16用于根据所述分析图片的名称,对属于相同钻孔编号的分析图片汇总,采用PDF生成技术,生成岩芯照片报告。
下面结合具体的实施例说明本发明的处理岩芯照片的系统。
所述箱体标记物颜色并不限定于橙色,因为橙色较易识别,本实施方式中采用橙色的箱体标记物作为举例,具体实施时,本领域技术人员可以根据需要,或者根据数字图像分析的方便,采用其他颜色的箱体标记物。
所述数据读取模块11以钻孔编号创建并命名若干个文件夹,对于同一个钻孔获得的岩芯的照片,将其读取到以相应的钻孔编号命名的文件夹中。
所述色彩转换模块12在将所述岩芯照片从RGB空间数据转换为YCbCr空间数据时,首先选择某一钻孔编号文件夹中的第一张岩芯照片,将所述岩芯照片数据读入到bitmap对象,然后采用DrawImage方法将所述岩芯照片显示在窗体上,再将所述岩芯照片从RGB空间数据转换为YCbCr空间数据。
在本实施方式中,所述色彩转换模块12中的转换公式为:
Y=0.299R+0.587G+0.114B
Cb=0.564(B-Y)
Cr=0.713(R-Y)
其中R、G、B分别表示所述岩芯照片的红、绿、蓝分量;而Y是则是指亮度分量,Cb指蓝色色度分量,Cr指红色色度分量;所述转换公式中的参数可以根据实际需要设置,本实施方式仅以一种较优的转换参数举例。
由于通常岩芯照片的拍摄作业是在野外工作,相机采用的普通的数码相机,天气情况有时是太阳暴晒、有时是阴天,环境光变化相对大,导致照片的亮度和色度有很大的变化,从而对同一物体的RGB值在环境光下变化太大,不便于正确分析。而YCbCr空间则提供了一种将亮度分量/蓝色分量/红色分量分割开来的方法,因此所述色彩转换模块12将所述岩芯照片转换为YCbCr空间数据,可以免除环境因素对照片亮度的影响,使本发明处理岩芯照片的系统可以适用于各种不同的使用环境。
作为一种优选实施方式,所述图像识别模块13在识别所述岩芯照片中的箱体标记物图像时,首先计算Cb分量的平均值,并根据所述Cb分量的平均值与所述岩芯照片中的各个像素的Cb分量的大小差值,将所述岩芯照片转换为二值化图像。
具体地,所述图像识别模块13计算Cb分量的平均值的公式:
其中,Width为图像的宽度,Height为图像的高度,由所述岩芯照片的分辨率决定。
在本实施方式中,在计算出所述Cb分量的平均值后,所述图像识别模块13采用以下公式判断所述岩芯照片的每一个像素,进行图像分割,将所述岩芯照片的Cb分量图像转换为二值化图像:
上述公式中的Image表示图像分割后的二值化图像的像素的取值。所述图像识别模块13在所述二值化图像中可以通过搜索,识别出设置在岩芯箱体四个角的箱体标记物的坐标。
上述公式中的分割值
是经过大量试验统计得来的,通过对大量的照片进行处理试验,确定这一值的识别效果最好。本领域技术人员根据实际操作中的需要可设定不同于
的分割值。但需注意:如果我们加大分割值,得到的识别区域就会变小,有可能没有把标志物识别出来,如果减少这个分割值,那么可能把背景也错误识别出来了,造成我们识别结果失效。
本领域的技术人员可以根据做业环境的实际情况或者具体选择设置所述箱体标志物颜色,以及分析使使用的颜色分量。
在本实施方式中,经过所述图像识别模块13的二值化处理后,四个橙色箱体标记物以及一些背景干扰在图像分割后的二值化图像中的值为1,其余背景图像的值为0。
此时,所述图像识别模块13搜索图像中的Blob(取值为1的像素聚集形成的连续像素块,即为暗斑),采用搜索图像中的每个像素点前后左右的8邻居,将值为1的互为邻居的像素点添加在一起形成一个集合,即为所述Blob。遍历整个岩芯照片,得到所有值为1的连续数据块(或称Blob)。计算每个Blob的面积,将面积最大的四个Blob作为搜索结果,其余的作为背景干扰舍弃掉。
所述图像识别模块13将所述四个面积最大的Blob的中心在图像中的位置,识别为四个箱体标记物的坐标;进一步地,可以根据计算的箱体标记物的坐标,在所述岩芯照片的显示窗体中分别显示四个充填的圆形标志,以显示识别效果,便于人工校验是否岩芯箱体得四角都识别正确。
如果识别结果正确,则所述图像识别模块13进入下一张照片识别工作。判断识别结果是否正确可以通过在所述图像识别模块13中设置相应的判断标准来自动实现,并在识别正确时自动进入下一张照片识别工作,在不正确时发出告警;也可以让操作人员根据所述岩芯照片的显示窗体中分别显示四个充填的圆形标志的位置来判断,在操作人员判断识别结果不正确时,可以人工采用鼠标点击岩芯照片中岩芯箱体的四角获取四个角坐标,然后按下一张或快捷键F6使所述图像识别模块13进入下一张照片识别工作;
所述图像识别模块13重复上述对箱体标记物识别步骤,识别该钻孔编号文件夹下的所有岩芯照片,将得到的照片四角坐标到保存到一个程序预先定义的数组中。
所述图像截取模块14截取所述分析图片时,根据上述识别到的每个岩芯照片中的四个箱体标记物的坐标,剪除了岩芯箱以外的无用背景,得到如附图5所示的处理后的分析图片。
在一个具体实施方式中,所述重命名模块15通过程序计算同一钻孔编号的文件夹下分析图片的数量,进行检索并以文件名进行排序,得到每个分析图片文件的位置,最后组合在一起,将每个分析图片文件保存为形如“钻孔编号-第几箱-共几箱.jpg”的文件名格式。
所述报告生成模块16根据所述分析图片的名称,对属于相同钻孔编号的分析图片汇总,采用PDF生成技术,生成岩芯照片报告。
作为一种具体实施方式举例,所述报告生成模块16引用iTextSharp.net类库,运行程序,选择钻孔编号对应的文件夹,自动依次读取各个文件夹中的分析图片,插入分析图片,并插入对应的文件名,进行图像的放缩,在一张A4纸张放置4排,每排两张的岩芯照片,并加入页眉、页脚、页码和目录等内容,形成一个完整的岩芯照片报告。
因为在生成岩芯照片报告时,图像处理的数据量非常大,岩芯照片的分辨率又高,因此所述报告生成模块16在所有的箱体标记物坐标确认正确后,再进行岩芯照片报告的生成,就是让计算机可以自动处理,无需操作人员等待。
又因为所述报告生成模块16生成的岩芯照片报告采用pdf格式,即使照片张数很大,仍然能很流畅的打开和浏览pdf,避免了采用Word文本时,文件过大而导致不能打开的缺点。
请参阅图7,图7是本发明处理岩芯照片的系统一种优选实施方式的结构示意图。
在本实施方式,所述处理岩芯照片的系统还包括仿射变换模块17,所述仿射变换模块17设置在所述图像截取模块14和重命名模块15之间,用于按照预定的分辨率,对所述分析图片进行仿射变换。
在本实施方式中,所述仿射变换模块17采用以下仿射变换公式:
其中,a、b、c、d、e、f、g、h是仿射参数,(x0,y0)、(x1,y1)、(x2,y2)、(x3,y3)为识别的四个箱体标记物在原有照片中的坐标;(u0,v0)、(u1,v1)、(u2,v2)、(u3,v3)为处理后的矩形区域的坐标。由上述仿射变换公式可得:
在本实施方式中,对所述处理后的矩形区域的坐标(u0,v0)、(u1,v1)、(u2,v2)、(u3,v3)采用(0,0)、(1298,0)、(1298,800)、(0,800),也就是将图像仿射变换为1298×800分辨率大小的图像,采用1298×800分辨率是由于现有岩芯箱的尺寸为86cm×53cm,由此图像的宽高比和岩芯箱的实际比例是一致的,另一方面,在插入PDF格式报告中后,可以满足打印清晰度的要求。
本领域技术人员可以采用其他方式,实现所述仿射变换模块17中的仿射变换,将所述分析图片转换为具有预定分辨率的图像。
通过对所述分析图片进行仿射变换,可以去掉岩芯照片时角度扭曲,提高岩芯照片报告的质量。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。