检测织物图像中的纱线数量


12

我是图像处理的新手,并且正在一个项目中确定织物图像中纱线的数量,即经纱和纬纱(与x轴垂直和平行的纱线)。

样本图片

我试图通过分别获取经线和纬线的列数和行数之和来检测纱线,但由于图像聚焦和清晰度不高,因此似乎不起作用。同样,该方法对织物中纱线的排列非常敏感。

如果可能,请提出一种更好的算法来检测纱线。同样,是否有可能使每个捕获的图像都变得笔直。我尝试了IMROTATE,但是它会在图像中创建黑色区域,这会干扰行的总数,并且算法会失败。

在这方面的任何帮助对我来说都是非常值得的。谢谢。


使用FFT。这是作业吗?
endolith'7

是的,傅里叶变换可能是正确的起点。它将“模糊”出图像的规则性。不过,不确定如何处理局部旋转。也许您可以变换条纹并记下它们的相位,然后确定相邻条纹是否向左或向右倾斜。
Daniel R Hicks

Answers:


9

傅立叶变换将为您提供图像中任何周期性特征的周期-例如,它将告诉您水平方向有3个像素,垂直方向有5个像素的结构事件,由此和像素比例可以计算出纱线的数量


3

Mathematica中的一些代码:

i = ColorNegate@Import@"http://i.stack.imgur.com/Jlhgw.jpg";
i3 = DeleteSmallComponents[Binarize[i, .4], 10];
lines = ImageLines[i3, .6];
Show[i, Graphics[{Thick, Orange, Line /@ lines}]]
(*y coord mean increments at x=0 *)
b = Mean@Differences@ Sort[(#[[2, 1]] #[[1, 2]] - #[[1, 1]] #[[2, 2]])/(#[[1,1]] - #[[2, 1]]) & /@ lines];
(*mean slope*)
a = Mean[-(-#[[1, 2]] + #[[2, 2]])/(#[[1, 1]] - #[[2, 1]]) & /@ lines];
(*Threads*)
- a ImageDimensions[i3][[1]]/b 
(*yarns*)
2 ImageDimensions[i3][[2]]/b

结果>

在此处输入图片说明

34.5541
27.2259


1
如果您解释这段代码在做什么,那将是很好的。
Abid Rahman K
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.