PIC Vietnam

Go Back   PIC Vietnam > Robotics > Xử lý ảnh

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Xử lý ảnh Các thuật toán xử lý ảnh dùng trong robot

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 25-05-2007, 12:15 PM   #1
svn
Đệ tử 1 túi
 
Tham gia ngày: Sep 2006
Bài gửi: 24
:
Một bài tập nhỏ về ứng dụng camera

Đây là một đề tài nhỏ, phải nói là ko khó khăn lắm (mình làm có 2 ngày), đúng ra đó là đồ án môn học, nhưng vì mình ko đặt nặng vấn đề coder , cho nên sau khi đã hiểu dc vấn đề thì cái đầu tiên mình làm là tìm ngay xem có những project tương tự như vậy chưa, và học hỏi họ trước Ứng dụng của mình viết bằng C# và sử dụng thư viện OpenCVDotNet, một wrapper của thư viện OpenCV của Intel sang DotNet
Tuy trong thư viện này có sẵn các object cho xử lý ảnh, nhưng chương trình này chỉ minh họa cho khả năng ứng dụng xử lý ảnh thôi,chứ ko bàn đến cách cài đặt các giải thuật và tìm kiếm giải thuật tối ưu. Ai đó thấy em dùng thư viện có sẵn đừng nói em chỉ copy&paste code mà tội nghiệp.
Link OpenCVDotNet: http://code.google.com/p/opencvdotnet/
Link source (dùng VS2005 nhé ) : http://haminhtranhanh.googlepages.com/tracker.zip
code mình hơi lung tung, do thử nhiều phương pháp khác nhau, nên trong code còn nhiều rác
Còn đây là đoạn video demo của nó: http://www.youtube.com/watch?v=FMhcmiQwEns

Trong mô hình này dùng động cơ bước nên nó hơi giật , ban đầu định dùng RC Servo nhưng nó đắt quá
svn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-06-2007, 01:30 PM   #2
IRF540CR
Nhập môn đệ tử
 
IRF540CR's Avatar
 
Tham gia ngày: Dec 2006
Bài gửi: 4
:
Chào SVN

Rất cảm ơn bạn đã post bài này lên.Mình thấy công nghệ này rất hay,mình cũng muốn nghiên cứu về nó nhưng cách thức như thế nào và bắt đầu từ đâu chắc có lẽ SVN biết rất rõ(vì đã làm qua rồi mừ).SVN có thể cho mình email được không để mình tiện liên lạc với SVN.Email của mình vucr2008@yahoo.com.Rất mong nhận được sự giúp đở của SVN.
IRF540CR vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-06-2007, 08:01 PM   #3
thanhhieu1611
Nhập môn đệ tử
 
Tham gia ngày: Jan 2007
Bài gửi: 1
:
Đây là công nghệ mọi thành viên đều rất muốn nắm bắt. Tớ chưa tìm hiểu nhưng ngày đó sẽ ko xa đâu. Hy vọng chúng ta sẽ cùng nhau nắm được công nghệ này.
thanhhieu1611 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-06-2007, 10:21 PM   #4
gong05sk
Nhập môn đệ tử
 
Tham gia ngày: Jun 2007
Bài gửi: 8
:
bạn có thể cho mình bài hướng dẫn cụ thể không. nói thật mình mới chỉ là sinh viên năm thứ nhất, chưa biết tí ti nào cả. làm ơn chỉ mình điểm bắt đầu và con đường tớ phải đi...thanks. hãy mail cho tớ gong_05sk@yahoo.com.vn cảm ơn bạn nhiều nha. bạn không cần phải chỉ cụ thể, chỉ cần cạch hướng đi và tài liệu tham khảo chương trình ứng dụng, trong bản demo tớ thấy có cái mạch giao tiếp thì phải. chỉ tớ luôn nhé...
gong05sk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-10-2007, 07:25 PM   #5
svn
Đệ tử 1 túi
 
Tham gia ngày: Sep 2006
Bài gửi: 24
:
Hix, lâu quá mình mới xem lại 2pic này
Tuy đó là đồ án mình làm, nhưng tư tưởng của mình là cái gì người ta đã làm tốt thì mình ko nên làm lại , cho nên chỉ cần tìm dc thư viện ngon là mình xài luôn, hiểu giải thuật của nó là dc. Và vì mình dùng dotnet nên opencvdotnet hiện là cái tốt nhất mình tìm dc, tuy nhiên nó vẫn thiếu vài giải thuật khá hay mà bản opencv gốc của intel có.
Trong trang web mình đưa có sẵn các ví dụ, bạn có thể down về xem source.
Còn mạch thì chỉ là mạch giao tiếp qua rs232 nhận vị trí tâm của đối tượng (thật ra là của hình vuông bao quanh đối tượng) rồi cho cái động cơ gắn wc quay theo thôi )
Nếu nói về kiến thức trong lĩnh vực này, thì nói thật là mình còn gà hơn cả gà, mí đại ca nào yêu cầu mình viết code cài đặt giải thuật thì mình chịu chết (chỉ bít xài).
svn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-10-2007, 12:31 AM   #6
tungthanh
Nhập môn đệ tử
 
Tham gia ngày: Jul 2006
Bài gửi: 3
:
svn ơi cho hỏi chút, mình cũng đang làm giống bạn nhưng xài mathlab. Bạn có thể nói rõ về giãi thuật bám đối tượng d ko? ( theo source mầu cũng d). Bạn tạo cái hình vuông xung quanh đối tượng sao vậy?
tungthanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-10-2007, 07:00 PM   #7
svn
Đệ tử 1 túi
 
Tham gia ngày: Sep 2006
Bài gửi: 24
:
Trong mathlab hình như có phần image toolbox , có thể sử dụng dc, nhưng mà mathlab thì mình gần như là ko biết
Giải thuật mình sử dụng trong bài của mình là Mean shift, bạn có thể google từ khóa này, rất nhiều tài liệu nói về nó. Trong ví dụ của mình thì đầu tiên mình vẽ 1 hình vuông lựa chọn đối tượng (đối tượng thường có màu sắc khá khác biệt so với chung quanh, khi lựa chọn thì biểu đồ màu của khu vực đó sẽ dc lưu lại), sau đó chỉ cần tìm ở những vùng lân cận những vị trí cho biểu đồ màu sát nhất thôi.
Nhắc lại, tất cả những việc trên nó được làm sẵn trong thư viện mình dùng , muốn tìm hiểu chi tiết cũng như tự cài đặt giải thuật thì các bạn chịu khó google hoặc vào thư viện trường vậy
svn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-10-2007, 09:28 PM   #8
phucanh
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Nơi Cư Ngụ: hue city
Bài gửi: 10
:
Send a message via AIM to phucanh
SVC !bạn up lên cái đoạn xử lý ảnh !!nhưng ko hiểu mình dwload thư viện opencv roi mà cài thì nó bảo là lỗi đường dẫn bảo phải ko thể intall dưới C:\Program Files\OpenCVDotNet\bin và ko extract ra được và mình cũng đang tìm tài liệu vể ý nghĩa của các hàm trong thư viện opencv! bạn có file đó ko??Nếu có cho mình xin nhé! cảm ơn trước nhé!!
phucanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-10-2007, 09:36 PM   #9
svn
Đệ tử 1 túi
 
Tham gia ngày: Sep 2006
Bài gửi: 24
:
Trên cái link đầu tiên mình đưa đã có hướng dẫn cài đặt và tut cho nó
Tuy nhiên tut của nó ko đầy đủ. Nếu bạn muốn tìm thêm các hàm khác thì chỉ có ...mò
Trước mình làm, thì mình mò như sau: đầu tiên tải cái doc của OpenCV gốc trên trang của intel về, xem nó có hàm gì, tác dụng thế nào, rồi sau đó mở source của OpenCVDotNet ra, nhìn trong đấy, rồi xem tut của nó, để xem cách họ sử dụng như thế nào, rồi các hàm khác cứ na ná như vậy mà viết, ko dc thử xoá, viết lại mới :P
Mình hoàn toàn ko dấu gì, nhưng thật sự là ngoài kiểu mò đó ra, mình ko biết có cái doc nào hoàn chỉnh cho cái này hay ko
Một số tính năng của OpenCV gốc vẫn chưa có trong OpenCVDotNet, điển hình là thuật toán LKTracking , xài cái này làm trò lăn bóng hay dùng webcam làm joyticks hay lắm :">
svn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-11-2007, 10:16 PM   #10
phucanh
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Nơi Cư Ngụ: hue city
Bài gửi: 10
:
Send a message via AIM to phucanh
xu li anh

Ban svn !! minh kô cài được opencvdotnet !! nó bị lỗi như thế này nè!! bạn có găp trường hơp này ko! co file dưới đây!!
giúp mình vói!! cam ơn nhiều!
phucanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-11-2007, 10:25 PM   #11
phucanh
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Nơi Cư Ngụ: hue city
Bài gửi: 10
:
Send a message via AIM to phucanh
Nó cứ đòi đương dẫn C:\Program Files\OpenCVDotNet\bin ko hiểu nỗi

có file ảnh!!
File Kèm Theo
File Type: rar untitled.rar (44.2 KB, 103 lần tải)
phucanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-11-2007, 02:02 AM   #12
xuanhuong1984
Nhập môn đệ tử
 
Tham gia ngày: Sep 2006
Bài gửi: 6
:
Chào bạn svn bạn có thể hướng dẫn cách làm cụ thể được ko, vì trình độ mình còn hạn hẹp mà.
xuanhuong1984 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-11-2007, 03:04 AM   #13
svn
Đệ tử 1 túi
 
Tham gia ngày: Sep 2006
Bài gửi: 24
:
Đây là trình tự các bạn phải làm để cài, cái vụ này mình công nhận nó ko làm tự nhận đường dẫn nên hơi chuối (chú ý là dùng dotnet nhé, VB, VC... cũng dc nhưng phải là .NET )
Đầu tiên, tải OpenCV gốc và OpenCVDotnet:
OpenCV: http://downloads.sourceforge.net/ope...2&big_mirror=1
OpenCVDotNet:
http://opencvdotnet.googlecode.com/f...-0.7-setup.exe

Sau khi download về, cài OpenCV (lấy từ cái link đầu tiên) vào thư mục c:\Program Files\OpenCV (chính xác thư mục này)
Sau đó cài OpenCVDotNet như bình thường, nó sẽ tìm trong thư mục trên bộ OpenCV gốc, do đó nếu các bạn ko cài hoặc cài vào thư mục khác nó báo lỗi ráng chịu (cái này nó ko tự detect đường dẫn dc, chuối thê ko bit)

Sau khi cài xong xuôi, mở VS2005 ra, tạo một project mới.
Vào Project>Add Reference, add thêm 2 file này trong thư mục cài OpenCVDotNet vào: OpenCVDotnet.dll và OpenCVDotnet.UI.dll
Thêm dòng sau vào đầu đoạn code (thường nằm trong form1.cs - mình dùng c#)
Code:
using OpenCVDotNet;
Vậy là có thể bắt đầu sử dụng thư viện này
Trong thư viện này, đã định nghĩa sẵn cho chúng ta 1 component, tương tự như picturebox, nhưng nhiều chức năng hơn, rất thuận tiện cho các ứng dụng xử lý ảnh: SelectPictureBox, tốt nhất nếu dùng OpenCVDotNet thì nên dùng luôn component này để lưu trữ, hiển thị ảnh luôn, component này chúng ta lôi ra từ file OpenCVDotnet.UI.dll :P
Đầu tiên, để capture ảnh từ 1 camera và hiển thị nó lên:
Code:
CVCapture capture = new CVCapture(); //ko nhất thiết phải khởi tạo = new CVCapture()
CVCapture là 1 object đặc tả cho các thiết bị như camera,webcam... đang có trên máy tính. Trường hợp chỉ có 1 cái webcam gắn vào nó sẽ tự detect và lưu vào đối tượng capture mình vừa tạo = dòng trên, còn có nhiều hơn 1 thì ... bạn phải làm luôn 1 form để chọn và cấu hình các tham số cho vào trong dấu () vậy, hoặc là điều chỉnh các tham số đó sau cũng dc.

Dùng đối tượng CVImage để lưu trữ hình ảnh, nên dùng cái này là tốt nhất, nó cũng rất dễ chuyển sang định dạng bitmap để dùng cho nhiều mục đích khác, nhưng các hàm xử lý ảnh của thư viện này thì chỉ dùng CVImage làm tham số
Code:
private CVImage image = null; //chưa có gì, nên cho nó = null
Tạo 1 SelectPictureBox trên form, giả sử đặt tên là SelectPictureBox1.
Để hiển thị hình ảnh thu dc từ webcam, có thể đặt đoạn code sau vào 1 timer, đặt interval là (1 / 24)*1000 ms (24 hình trên 1s ấy mà )
Code:
image = capture.QueryFrame();
            if (image == null) capture.Restart();
            selectPictureBox1.Image = image.ToBitmap();
Có nhiều bạn thắc mắc ko biết cái hình chữ nhật đỏ đỏ mình vẽ lên trên cái picture đó làm sao, cái đó ko phải mình làm, mà là một tính năng của SelectPictureBox Trong quá trình chương trình chạy, cứ cầm chuột nhấn giữ và kéo trên cái selectpicturebox là nó sẽ tự động vẽ ra 1 hình chữ nhật như vậy, sau khi thả chuột thì thông tin trong hình chữ nhật đó sẽ lưu lại, kể cả toạ độ của tâm hình chữ nhật đó.
Sau khi nắm dc vài component của thư viện này, phần còn lại là phải tìm hiểu về xử lý ảnh, chính xác là muốn xử lý cái gì, dùng thuật toán nào (cái này có thể ko cần tìm hiểu sâu, chỉ cần biết sơ sơ trình tự của từng cái là đủ để áp dụng các hàm có sẵn trong thư viện, chỉ cần sửa đôi chút trong hàm Track() trong source của mình (mình cũng chỉ sửa đôi chút từ cái source meanshift họ cung cấp mẫu thôi :"> ), để làm 1 ứng dụng nhỏ, đơn giản thì đoạn code trong hàm track() đó là đủ.
Trong ct của mình, trình tự sẽ là:
-Dùng chuột vẽ một hình chữ nhật bao quanh đối tượng di chuyển, thực chất là thay đổi vị trí và kích thước của SelectedRect trong component SelectPictureBox (chỉ cần giữ chuột và kéo, thả ra là nó tự thay đổi theo chúng ta chọn).
-Lưu biểu đồ màu của vùng dc chọn (bằng hàm UpdateHistogram)
-Sau một thời gian, áp dụng giải thuật detect = meanshift
Code:
using (CVImage bp = image.CalcBackProject(this.initialHistogram))
            {   
                // calculate mean shift with user parameters and region of interest.
                CVConnectedComp conn = bp.MeanShift(selectPictureBox1.SelectionRect, Iterations);
-Đặt lại SelectedRect cho SelectPictureBox1 ( hình chữ nhật mới bao quanh đối tượng di chuyển sẽ tự động dc vẽ)
Code:
selectPictureBox1.SelectionRect = conn.Rect;
Việc còn lại, là xác định xem vị trí mới này có thay đổi so với trước ko, lúc này mọi việc đơn giản hơn nhiều , rồi xuất tín hiệu điều khiển ra mạch điều khiển động cơ quay camera
-Lặp lại các bước trên.

Thân

P/s: giờ mình mới xem lại cái thư mục project đó, quá nhiều file ko cần thiết, một số mình viết khi định dùng directX, nhưng ko ăn nhập gì vào chương trình cả, cứ remove nó thẳng tay đi
svn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-11-2007, 01:55 PM   #14
phucanh
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Nơi Cư Ngụ: hue city
Bài gửi: 10
:
Send a message via AIM to phucanh
Thank for all! Svn !! Nó thật hay!! ko biết thuật toán trong xử lý robot !! bạn tài liệu gì hay một số thông tin và thuật toán trong xử lý ảnh trong robot!!Mình cũng đang tìm hiểu về nó!! Mình thấy dùng direct X cũng hay !nó có sách giới thiệu và một vài thuật toán!! mình đua ra để tham khảo!!
phucanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-03-2008, 09:09 PM   #15
giaquangvu
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Bài gửi: 1
:
hi svn !!! đề tài của bạn rất hay. Bạn có thể chỉ dẫn mình cụ thể hơn không. Chẳng hạn giao tiếp máy tính thế nào, mạch quay webcam thế nào ... mình hơi gà ^^ . Cảm ơn bạn nhiều lắm giaquangvu@yahoo.com
giaquangvu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 03:25 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam