Giter VIP home page Giter VIP logo

capsule-defect-detection's Introduction

Capsule-defect-detection

vs2013,opencv2.4.9 1、使用cvtColor将图像从BGR转换为GRAY 2、使用blur函数对图像进行滤波处理 3、使用Canny函数对图像进行Canny边缘提取 4、使用HoughLinesP函数对图像进行统计霍夫变换,通过霍夫变换找到轮廓图像内的直线,求出直线的平均斜率,若胶囊倾斜,则为胶囊的倾斜斜率 5、根据上一步得到的斜率可以得知图像倾斜的角度,以图像的中心为原点,使用warpAffine函数对图像进行旋转变换 6、对经过校正的图像使用分水岭算法,使用分水岭算法需要在处理之前手动设置注水点 7、给定的胶囊图片除含有胶囊外,还包括胶囊外的较大部分的空白区域,需要去掉这些空白区域,只保留单个胶囊,以方便后面的检测工作 首先检测图像最外层的轮廓,然后通过比较轮廓的面积找到最大的轮廓,即是胶囊的轮廓,然后找到逼近轮廓的外接多边形,求出外接多边形的外接矩形,最后即可得到ROI 8、长度检测 利用经过预处理的图像对各个区域的长度进行测量,从上往下扫描,每一个区域中所有像素点为同一像素值,不同区域中像素值不同。根据不同像素值的跳变可以找到每条分割线。 最后使用line函数把每个分割线描绘出来,并记录其纵坐标,将各个纵坐标相减即可得到胶囊各个区域的长度,将参数和预设的值进行比较,即可判断出胶囊是过长、过短还是在长度方面符合要求 9、切边检测 检测是否被切边的算法是判断胶囊顶端宽度和胶囊外接矩形宽度的比值。 正常的胶囊底部或者顶部都呈现弧形,所以顶端边缘的像素都较少,而被切边的胶囊的边缘都较为平直,像素较多。考虑到不同胶囊图像中,胶囊大小可能不同,所以判断顶端边缘像素和外接矩形的比值。 10、双帽检测 在本来灰度值较高的胶囊体上被加上了灰度值较低胶囊帽,所以这时只需简单地将胶囊最上面部分和最下面部分的灰度平均值进行比较,如果差值小于设定好的阈值, 即可认定胶囊存在“双帽”的缺陷。 采用的算法是比较最上面100行和最下面100行的平均灰度值,如果差值大于预定阈值,则判断为双帽 11、瘪壳检测 检测瘪壳所用的算法是判断帽的平均宽度和胶囊体宽度的差值,如果差值大于设置的阈值,则表明体或者帽被挤压变形,判断为瘪壳 12、局部缺陷检测 局部缺陷检测是检测胶囊上局部区域的缺陷,所用的方法是先通过一个完整胶囊的原始图得到一个待检测部分的mask图像,用mask图像和待检测的图像进行操作,把缺陷部分标记 1)获得一张完整的胶囊图片,根据完整的胶囊图像制作mask。 因为图片除含有胶囊外,还包括胶囊外的较大部分的空白区域,所以去掉这些空白区域,只保留单个胶囊 2)对图像二值化操作,再通过寻找轮廓函数搜索图片内轮廓,如果是有气泡或破洞等其他类型缺陷的胶囊,白色胶囊区域内会有因二值化留下的黑色缺陷轮廓, 通过绘制轮廓函数把胶囊内部黑点涂成白色,目的是除背景外只保留完整胶囊部分。 3)处理后的图片通过腐蚀函数进行腐蚀操作,腐蚀函数内参数通过实验自定义,去掉胶囊边缘部分,防止边缘反光带来的误检。 4)在长度检测的过程中,得到套合区和胶囊体的交接的位置。根据这个位置在mask相应的位置绘制直线,就可以得到有胶囊帽和胶囊体分离线的mask。 5)因为制作的mask图像的尺寸和待检测图像的尺寸可能不同,所以,先对mask图像进行透视变换,让mask图像和被检测的图像尺寸相同。 根据两幅图像4个端点的坐标即可确定透视变换的矩阵,然后进行变换。 6)将带检测胶囊图像进行灰度化处理,然后通过局部自适应二值化函数进行自适应二值化处理。 7)用自适应之后的图像与mask先进行与操作再进行异或操作,得到图像中只保留胶囊的缺陷部分的缺陷图。 8)通过寻找轮廓函数找到缺陷,通过轮廓的面积排除掉干扰,得到最后的缺陷的轮廓,并用矩形框出。 根据缺陷外接矩形的位置,长宽比可以判断出是哪种缺陷。

capsule-defect-detection's People

Contributors

softroadeast avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.