运用Python的CV2库检测tiff图形中的圆形
Python #Dataprocessing
如何确定实验数据的圆形?
实验数据保存为Tiff文件,其实就是一个强度分布的矩阵,与实际的图片是有区别的。
标签图像文件格式(Tag Image File Format,TIFF)是一种灵活的位图格式,主要用来存储包括照片和艺术图在内的图像,最初由Aldus公司与微软公司一起为PostScript打印开发。TIFF与JPEG和PNG一起成为流行的高位彩色图像格式。TIFF格式在业界得到了广泛的支持,如Adobe公司的Photoshop、The GIMP Team的GIMP、Ulead PhotoImpact和Paint Shop Pro等图像处理应用、QuarkXPress和Adobe InDesign这样的桌面印刷和页面排版应用,扫描、传真、文字处理、光学字符识别和其它一些应用等都支持这种格式。从Aldus获得了PageMaker印刷应用程序的Adobe公司控制着TIFF规范。
我们需要一个检测圆的算法来实现,我主要参考了这两个教程
Detecting Circles in Images using OpenCV and Hough Circles
Circle Detection using OpenCV | Python
但是我需要再做更改的是:
上面给的例子都是导入一个颜色图,具有RGB三个通道的数据,我们用
cv2
库可以轻松实现不同颜色通道的表示方法。实验数据是tiff文件,其实是单通道的数据,我们需要先读取数据
1 | np.array(plt.imread(Path+Filename)) |
再将数据保存为uint8
格式
1 | img = img.astype(np.uint8) |
再保存为灰度图像数据
1 | gray = np.array(Image.fromarray(img)) |
再进行锐化处理
1 | gray_blurred = cv2.blur(gray, (3, 3)) |
最后运用函数cv2.HoughCircles
来检测
1 | detected_circles = cv2.HoughCircles(gray_blurred, |
可以定义一个函数完成这些操作。
1 | def find_center(image_ori, num_approxi): |
效果图为
发现效果还是可以的,自己还是得微调才行。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment