Определение количества нитей на тканевом изображении

12

Я начинающий пользователь в области обработки изображений и работаю над проектом по определению количества нитей на изображении ткани, т.е. деформации и утки (перпендикулярные и параллельные нити к оси X).

образец изображения

Я пытаюсь определить пряжу, взяв сумму столбцов и строк за деформации и уток соответственно, но это не похоже на работу, потому что изображение не очень хорошо сфокусировано и резкое. Также метод очень чувствителен к выравниванию нитей в ткани.

Пожалуйста, предложите лучший алгоритм, если возможно, для обнаружения пряжи. Кроме того, если есть возможность сделать пряжу прямо для каждого захваченного изображения. Я пробовал IMROTATE, но он создает черные области на изображении, что мешает сумме строк, и алгоритм терпит неудачу.

Любая помощь в этом отношении будет очень полезна для меня. Благодарю.


источник
Используйте БПФ. Это домашнее задание?
эндолит
Да, преобразование Фурье, вероятно, является правильной отправной точкой. Это "вытянет" регулярность изображения из нечеткости. Не уверен, как справиться с частичным вращением, хотя. Возможно, вы могли бы преобразовать полосы и отметить их фазу, а затем определить, были ли соседние полосы смещены влево или вправо.
Даниэль Р Хикс

Ответы:

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
Было бы хорошо, если бы вы объяснили, что вы делаете в этом коде.
Абид Рахман К