การตรวจจับจำนวนเส้นด้ายในภาพผ้า


12

ฉันเป็นผู้ใช้งานมือใหม่ในการประมวลผลภาพและทำงานในโครงการเพื่อกำหนดจำนวนเส้นด้ายในภาพสิ่งทอเช่น warps และ wefts (ตั้งฉากและเส้นด้ายขนานกับแกน x)

ภาพตัวอย่าง

ฉันพยายามตรวจสอบเส้นด้ายด้วยการหาผลรวมของคอลัมน์และแถวสำหรับการแปรปรวนและผ้าตามลำดับ แต่ดูเหมือนจะไม่ทำงานเพราะภาพไม่ได้โฟกัสและคมชัดมาก นอกจากนี้วิธีการนี้ยังไวต่อการจัดเรียงของเส้นด้ายในเนื้อผ้า

กรุณาเสนออัลกอริทึมที่ดีกว่าถ้าเป็นไปได้สำหรับการตรวจสอบเส้นด้าย นอกจากนี้หากมีความเป็นไปได้ที่จะทำให้เส้นด้ายตรงสำหรับภาพที่จับทุก ฉันลอง IMROTATE แต่สร้างพื้นที่สีดำในภาพซึ่งรบกวนผลรวมของแถวและอัลกอริทึมที่ล้มเหลว

ความช่วยเหลือใด ๆ ในเรื่องนี้จะมีค่ามากสำหรับฉัน ขอบคุณ


ใช้ FFT เป็นการบ้านหรือไม่?
endolith

ใช่การแปลงฟูริเยร์น่าจะเป็นจุดเริ่มต้นที่ถูกต้อง มันจะ "ดึง" ความสม่ำเสมอของภาพออกจากความคลุมเครือ ไม่แน่ใจว่าจะจัดการกับการหมุนบางส่วนได้อย่างไร บางทีคุณสามารถแปลงลายเส้นและบันทึกเฟสของมันจากนั้นกำหนดว่าแถบที่อยู่ติดกันนั้นเอียงไปทางซ้ายหรือขวา
Daniel R Hicks

คำตอบ:


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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.