ตุลาคม 24, 2014, 02:44:33 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: สอบถามเรื่อง การหามุมภาพครับ  (อ่าน 2822 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
tobmaster
Jr. Member
**
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 84



| |
« เมื่อ: กรกฎาคม 10, 2012, 11:49:23 pm »

สวัสดีครับ คุณSanti จะสอบถาม การCrop ภาพ จุดที่เราสนไจอะครับ ตอนนี้ ถ้าเป็นการ ฟิค ค่า มันก็จะแสดงได้ เช่น
Code: (c)
cvSetImageROI(ค่า X , ค่า Y,ค่า Width,ค่า Height
CvRect rect = cvRect(0,0,0,0);
< ค่าต่างๆ ในช่อง ผมอยากให้ มันมีค่าเริ่มต้นที่ 0 เพื่อให้อัลกอรึทึม(ที่จะสร้าง) มันประมวลมาให้อะครับ
แต่ คือ เท่าที่ ศึกษา การหามุม ใช้ ConerHarris ใช้ไหมอะครับ
แล้วเรื่อง Hit or Miss Thinning เกี่ยวข้องด้วยไหมอะครับ

นอกจากนี้ อยากจะขอคำแนะนำพี่Santi ว่า ควรศึกษา เรื่องใด ของ ทฤษฏีการประมวลหามุมภาพ ของOpenCvเพิ่มเติมอะครับ

ขอบคุณมากครับพี่



บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8040


ShadowWares


| |
« ตอบ #1 เมื่อ: กรกฎาคม 11, 2012, 09:48:02 am »

ใช้ cvSetImageROI() การ crop ภาพเป็นวิธีที่เหมาะสมที่สุดแล้วครับ
รูปแบบการใช้ เหมือนที่คุณเข้าใจคือ

Code:
cvSetImageROI( IplImage* img, CvRect rect )
ผลที่ได้ก็จะเป็นตามรูป

ตัวแปรสมาชิกของ rect คือสิ่งที่ทำให้ได้สิ่งที่ต้องการ
และแน่นอน ย่อมถูกกำหนดผ่านจากการคำนวณได้


อ้างถึง
แต่ คือ เท่าที่ ศึกษา การหามุม ใช้ ConerHarris ใช้ไหมอะครับ
แล้วเรื่อง Hit or Miss Thinning เกี่ยวข้องด้วยไหมอะครับ
ส่วนนี้ไม่แน่ใจว่ามันไปเกี่ยวอะไรกับงานของคุณ หากต้องการคำตอบที่ตรงจุด คุณต้องแจกแจงรายละเอียดของงานที่คิดจะทำอยู่ให้ผมเข้าใจก่อนสักเล็กน้อย


อ้างถึง
นอกจากนี้ อยากจะขอคำแนะนำพี่Santi ว่า ควรศึกษา เรื่องใด ของ ทฤษฏีการประมวลหามุมภาพ ของOpenCvเพิ่มเติมอะครับ
เรื่องการหามุมของภาพ ให้ศึกษาเรื่อง Corner detection ครับ มีอยู่หลายวิธี เท่าที่จำได้ เช่น Harris Corner Detector, The Shi-Tomasi Corner Detector
Link นี้น่าจะมีประโยชน์กับคุณ ลองเข้าไปอ่านดูครับ >>
http://www.edwardrosten.com/work/fast.html
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
tobmaster
Jr. Member
**
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 84



| |
« ตอบ #2 เมื่อ: กรกฎาคม 11, 2012, 02:41:02 pm »

ขอบคุณมากครับ คุณSanti ลิ้งที่ให้มาเป็นประโยชน์มากเลยคร้บ ไง เดวผมลองปรับแปลง Code ดูก่อนนะครับ เดี๋ยวจะมาปรึกษา ทฤษฏีอื่นๆต่อครับ

บันทึกการเข้า
tobmaster
Jr. Member
**
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 84



| |
« ตอบ #3 เมื่อ: กรกฎาคม 18, 2012, 06:37:26 am »

สวัสดีครับคุณSanti
ตอนนี้ ผมใช้ CvPointFrom32f *corners หาจุดได้ละครับ

โดยกำหนด corners เป็นตัว เก็บจุด Center

คือตอนนี้ผมต้องการจะ ลากเส้น จากจุดเริ่มต้น ไปยัง จุดปลายทาง โดยใช้ cvline โดยจะให้ตีเส้น ถ้าแนวตั้ง ระนาบ แกนX แนวนอน ระนาบ แกนY

ถ้าใช้ คำสั่งพื้นฐานนี้ มันจะตีมั่วไปหมดโดยเราไม่มี จุดกำหนดเงื่อนไข
Code: (c)
for(j=0;j<i;j++)
      
   cvLine(img_2,cvPoint(corners[j].x,corners[j].y),cvPoint(corners[j+1].x,corners[j+1].y),CV_RGB(255,0,0),2);

ผมจะมาสอบถามว่า  สมมุติว่าผมมี จุด อยู่ 10 จุด เพื่อจะกำหนดว่า จุดที่ 1 จะเทียบ แกนX กับ จุดที่ 2,3,4,5,6,7,...n เพราะจะตีเส้นให้เป็น4เหลี่ยมตรงกรอบป้ายทะเบียนอะครับ
การเขียนcode นี้ ผมต้อง ใช้ทฤษฎี ของ data structur ไหมอะครับ พวก insertion, selection รึป่าวครับ
Code: (c)
   if(corners.x == corners[i+].x)
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8040


ShadowWares


| |
« ตอบ #4 เมื่อ: กรกฎาคม 18, 2012, 08:58:13 am »

อ้างถึง
ผมจะมาสอบถามว่า  สมมุติว่าผมมี จุด อยู่ 10 จุด เพื่อจะกำหนดว่า จุดที่ 1 จะเทียบ แกนX กับ จุดที่ 2,3,4,5,6,7,...n เพราะจะตีเส้นให้เป็น4เหลี่ยมตรงกรอบป้ายทะเบียนอะครับ
การตีกรอบสี่เหลี่ยมใดๆ ให้ใช้ cvDrawRect() ครับ

อ้างถึง
การเขียนcode นี้ ผมต้อง ใช้ทฤษฎี ของ data structur ไหมอะครับ พวก insertion, selection รึป่าวครับ
data structure ใช้ตัวเดียวคือ CvRect ครับ

เดาจากคำถามคิดว่าคุณกำลังจะทำการ detect ป้ายทะเบียนรถ และตอนนี้ดูเหมือนจะเน้นไปที่การหามุมเสียด้วย ใช่หรือเปล่า?
ได้มีการใช้วิธีการอื่นๆ เข้ามาช่วยด้วยหรือไม่ เช่น Shape, Color, Texture, Position, Size และอื่นๆ เข้ามาช่วยด้วยหรือไม่?
ถ้ายังไม่ได้ใช้ ผมขอแนะนำให้ใช้ด้วยนะครับ เพราะเพียงแค่มุมอย่างเดียว คิดว่าไม่เพียงพอ
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
tobmaster
Jr. Member
**
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 84



| |
« ตอบ #5 เมื่อ: กรกฎาคม 18, 2012, 12:25:39 pm »

อ้างถึง
เดาจากคำถามคิดว่าคุณกำลังจะทำการ detect ป้ายทะเบียนรถ และตอนนี้ดูเหมือนจะเน้นไปที่การหามุมเสียด้วย ใช่หรือเปล่า?
ใช่ครับ ต้องการdetectป้ายทะเบียน โดยให้คอมพิวเตอร์นั้น ระบุ มุม ที่ ระนาบ แกนX,Y ที่เป็นสี่เหลี่ยม ตอนนี้ ต้องการคือ มุมใดก้อได้ที่เป็นรุปสี่เหลี่ยม
อาจจะมี 4-5รูปอยู่ในภาพก็ได้ครับ แล้วเดี๋ยวจะมาสร้างเงื่อนไข ไห้โปรแกรม คิดว่า สี่เหลี่ยมใดที่คิดว่าจะเป็นป้ายทะเบียนมากที่สุด

อ้างถึง
ได้มีการใช้วิธีการอื่นๆ เข้ามาช่วยด้วยหรือไม่ เช่น Shape, Color, Texture, Position, Size และอื่นๆ เข้ามาช่วยด้วยหรือไม่?
ยังเลยครับผม Shape, Color, Texture, Position, Size คืออะไรหรอครับ พอจะรบกวนขอตัวอย่าง การเรียกใช้กับการแทนค่า Parameter พอสังเขปได้ไหมครับ ขอบคุณครับ
บันทึกการเข้า
tobmaster
Jr. Member
**
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 84



| |
« ตอบ #6 เมื่อ: กรกฎาคม 18, 2012, 12:27:30 pm »

โทดทีครับ เช่น Shape, Color, Texture, Position, Size เป็นแนวทฤษฏีก้อได้ครับ เดวผมไปศึกษาเพิ่ม ขอบคุณครับ
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8040


ShadowWares


| |
« ตอบ #7 เมื่อ: กรกฎาคม 18, 2012, 08:56:17 pm »

แปรตามตัวก็น่าจะทราบความหมายแล้วนะครับ ไม่ต้องไปอ้างอิงทฤษฎีให้วุ่นวาย
- Shape คือรูปร่าง สิ่งที่คุณต้องการคือสี่เหลี่ยมผื้นผ้า สามารถใช้ Shape Detection / Classification ได้
- Color คือสีของเป้าหมาย ป้ายทะเบียนที่คุณต้องการมีพื้นสีขาว อักษรสีดำเป็นต้น สามารถใช้ Color Detection ได้
- Position ตำแหน่งของสิ่งที่สนใจ เข่น ป้านทะเบียนจะอยู่ตรงกลาง ด้านล่างของตัวรถ สูงจากพื้นถนนเล็กน้อย และอื่นๆ สามารถใช้ Heuristic เข้าช่วยได้
- Size ขนาดของเป้าหมาย ป้ายทะเบียน มาตรฐานมีขนาดทีถูกกำหนดเอาไว้ ไม่ใช่ไปเจอป้ายข้างถนนเป็นรูปสี่เหลี่ยมแล้วตีความเป็นป้ายทะเบียนไปหมด
- Texture เป็นรายละเอียดของภาพที่มองเห็น เน้นไปที่ สี แสง และเงา

ทั้งหมดทั้งมวลเป็นพื้นฐานของการประมวลผลภาพ แต่ต้องกลั่นกรองออกมาจากความรู้ที่ต้องอ่าน ประกอบกับกระบวนการคิด และการเขียนโปรแกรมเพื่อให้ได้มา และทั้งหมดนั้นก็คือพื้นฐานของ OpenCV เช่นกัน
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
tobmaster
Jr. Member
**
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 84



| |
« ตอบ #8 เมื่อ: กรกฎาคม 20, 2012, 02:06:52 pm »

ดีครับ คุณSanti ตอนนี้ ผมอยากจะทำการ Printf  ค่า Corners.x กับ Corners.y
จุดประสงค์ คือ ผมอยากได้ ค่า แกนx แกนy ของ Corners มาแสดงเพื่อดูมุมที่หาได้แต่ละมุมอะครับ
แต่ cvPoint2D32f เป็น Type ของมัน เลยไม่รู้ว่า ตอนประกาศ prinf จะใช้ %? เพื่อให้มันแสดง2ค่านี้ออกมา
Code: (c)
CvPoint2D32f *corners ;
corners = (CvPoint2D32f *) cvAlloc(corner_count * sizeof (CvPoint2D32f));
for(i=0;i<corner_count;i++){
      
      
printf("\n Total= %d\tNo = %d\t x = %? \t y = %?\t  ",corner_count,i,corners.x,corners.y);
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8040


ShadowWares


| |
« ตอบ #9 เมื่อ: กรกฎาคม 20, 2012, 02:19:50 pm »

%d, %i, %u คือจำนวนเต็ม
%f คือจำนวนจริง

สิ่งที่คุณสนใจคืออะไร?
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
tobmaster
Jr. Member
**
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 84



| |
« ตอบ #10 เมื่อ: กรกฎาคม 20, 2012, 11:03:16 pm »

ครับ ขอบคุณ พอดีเจอTypeมันแระครับ ตอนแรก งง กับ Type cvPoint2D32f ด้านใน มันเปน Foat ขอบคุณมากครับ
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8040


ShadowWares


| |
« ตอบ #11 เมื่อ: กรกฎาคม 21, 2012, 08:17:31 am »

ครั้งต่อไป ก็อ่านให้ดีๆ
เสียเวลาอ่าน ดีกว่าเสียเวลามั่วไปเรื่อยๆ แบบไร้ทิศทาง
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
kengz
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 38


| |
« ตอบ #12 เมื่อ: สิงหาคม 01, 2012, 06:49:42 pm »

ขอขัดจังหวะนิดหนึ่งนะครับ การ crop ภาพโดยใช้

Code:
cvSetImageROI( IplImage* img, CvRect rect )

ผมอยากทราบว่า ถ้าใช้ method ดังกล่าวแล้ว จะนำ ผลลัพธ์ ไปเก็บอีกตัวแปรหนึ่ง

ยังไงหรอครับ  ขอบคุณครับ  cheesy cheesy
บันทึกการเข้า

http://www.labplays.com/ : รวบรวมความรู้เกี่ยวกับ computer vision
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8040


ShadowWares


| |
« ตอบ #13 เมื่อ: สิงหาคม 01, 2012, 08:56:33 pm »

cvCopy() ครับ
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป: