|
Tài trợ cho PIC Vietnam |
Xử lý ảnh Các thuật toán xử lý ảnh dùng trong robot |
|
Ðiều Chỉnh | Xếp Bài |
|
25-05-2007, 12:15 PM | #1 |
Đệ 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á |
23-06-2007, 01:30 PM | #2 |
Nhập môn đệ tử
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.
|
23-06-2007, 08:01 PM | #3 |
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.
|
24-06-2007, 10:21 PM | #4 |
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é...
|
26-04-2008, 12:28 PM | #5 |
Nhập môn đệ tử
Tham gia ngày: Apr 2008
Bài gửi: 7
: |
Tôi có tài liệu hướng dẫn cho người mới bắt đầu đây!
Tôi thấy công nghệ này ngày càng phát triển và được ứng dụng vào rất nhiều lĩnh vực trong cộc sống hiện nay. Tôi cũng mới được tiếp xúc với công nghệ này được chưa đầy một năm và tôi cũng mới tiếp thu được có một chút trong kho tàng rộng lớn của bộ mã nguồn mở này: OpenCV - Open Computer Vision.
|
05-10-2007, 07:25 PM | #6 |
Đệ 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). |
15-10-2007, 12:31 AM | #7 |
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?
|
15-10-2007, 07:00 PM | #8 |
Đệ 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 |
24-10-2007, 09:28 PM | #9 |
Nhập môn đệ tử
|
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é!!
|
27-10-2007, 09:36 PM | #10 |
Đệ 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 :"> |
08-11-2007, 10:16 PM | #11 |
Nhập môn đệ tử
|
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! |
08-11-2007, 10:25 PM | #12 |
Nhập môn đệ tử
|
Nó cứ đòi đương dẫn C:\Program Files\OpenCVDotNet\bin ko hiểu nỗi
có file ảnh!! |
09-11-2007, 02:02 AM | #13 |
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à.
|
10-11-2007, 03:04 AM | #14 |
Đệ 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; 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() 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 Để 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(); 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); Code:
selectPictureBox1.SelectionRect = conn.Rect; -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 |
15-11-2007, 01:55 PM | #15 |
Nhập môn đệ tử
|
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!!
|
|
|