PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Xử lý ảnh (http://www.picvietnam.com/forum/forumdisplay.php?f=51)
-   -   Những câu hỏi về xử lý ảnh (http://www.picvietnam.com/forum/showthread.php?t=382)

imaging 12-04-2006 06:28 PM

Em có vấn đề như thế này: có một vật thể hình dạng bất kỳ trong ảnh (đã phân ngưỡng thành nhị phân, vật là 1 nền là 0) muốn tính diện tích của nó. Kính mong bác chỉ giáo

imaging 12-04-2006 08:57 PM

Trích:

Nguyên văn bởi chungtanlam
còn về giải thuật tìm toạ độ các điểm thuộc vật thể đã được Threshold thì không có vấn đề gì phải không.

Cám ơn bác nhiều. Xin bác chỉ giáo về thuật toán này. Cái calib tính sau vì camera cố định và cảnh cũng tương đối cố định.

equation 12-04-2006 09:42 PM

bạn có thể dùng thuật toán Connected Component để giải quyết vấn đề này.
 
1 Attachment(s)
Chào bạn, mình nghe câu hỏi của bạn có vẻ giống câu hỏi hồi mới đầu mình bước chân vào lãnh vực xử lý ảnh. Có phải ý bạn muốn tính diện tích 1 vật có hình dạng bất kỳ trong 1 ảnh nhị phân không, đúng không? Như vậy trước hết mình cần quy ước rõ 1 vật ở đây là 1 tập hơp các pixel kết nối với nhau (connected). Thông thường tùy thuộc vào threshold chọn mà bạn có 1 ảnh " trong sạch" đến mức nào, tức là có nhiều noise hay chỉ 1 vật duy nhất. Nếu threshold của bạn tốt thì trong ảnh nhị fân chỉ còn duy nhất vật mà bạn cần. Nhưng trường hợp thông thường nhất là trong ảnh nhị fân ngoài vật ta cần tính còn có 1 số pixel giá trị 1 đứng riêng biệt. Do vậy ta không thể scan hết ảnh mà đếm pixel giá trị 1 để tính diện tích của vật cần tìm. Vấn đề chủ yếu của ta đặt ra ở đây là tìm những pixel giá trị 1 nào connect với nhau tạo nên vật ta cần tính diện tích. Để giải quyết vấn đề này, bạn hãy dùng thuật toán Connected Component Labelling. Kết quả của thuật toán này là các pixel của cùng 1 vật sẽ mang cùng 1 giá trị label. Như vậy, dựa trên các giá trị label này, bạn có thể biết được có bao nhiêu object trong ảnh nhị fân cũng như những pixel nào tạo nên vật bạn cần tính diện tích. Sau đó, việc sau cùng bạn phải làm chỉ là scan và đếm các pixel có cùng 1 label tạo nên vật mà bạn muốn tính diện tích. Số lượng pixel này chính là diện tích của vật cần tìm. Hy vọng là những suy nghĩ của mình có thể giúp ích cho bạn. Chúc bạn thành công.
Ps: Mình attach sơ đồ tóm tắt cho thuật toán Connected Component dưới đây. Thuật toán này có 2 kiểu: đệ quy và bình thường.

volvo 13-04-2006 12:03 AM

Theo mình được biết, để giải bài toán này cần phải biết thông số của camera như góc mở, tiêu cự ....

T&T 13-04-2006 01:00 AM

Thực ra, ngay khi đã biết tất cả các thông số của camera thông qua camera calibration, chúng ta cũng không thể tính toán được "diện tích thực" của vật.

Bởi giữa 2 chiều ngang và dọc của hình.

-Thông số bên ngoài: là sự tương quan giữa tọa độ camera và tọa độ gốc (một tọa độ nào đó mà ta chon trước - quan trọng trong tracking hay mobile robot).

Như vậy, ta có thể thấy, sau khi calibrate camera, từ 1 điểm ảnh nào đó, ta chỉ có thể biết phương hướng của nó so với camera mà thôi, khoảng cách của nó so với camera không thể biết được nếu ta chỉ chụp 1 ảnh ở cùng 1 vị trí. Muốn có được khoảng cách giữa vật và camera, cách duy nhất là phải có 2 camera trở lên (các camera này đều đã được xác định thông số) đặt ở 2 (hoặc nhiều nếu nhiều camera) vị trí khác nhau (cái này gọi là stereo vision - mình đang đau khổ với nó đây :p ). Các vị trí tương quan của camera phải được xác định Việc xác định vị trí của vật thông qua vị trí tương quan đó và hướng của vật so với camera (thông qua vị trí của nó trên hình). Phần còn lại chỉ là bài toán hình học không gian mà thôi.

Nói tóm lại, nếu bạn muốn tính "diện tích thực tế" của vật, bạn phải làm nhiều công đoạn như vậy. Còn nếu bạn chỉ cần tính diện tích trên hình mà thôi thì có lẽ equation cũng nói khá kỹ rồi. Tuy nhiên, thực tế, những tool về xử lý ảnh đều có hàm này (đơn cử là tool OpenCV - bạn có thể tìm trên mạng - cái này mình đã dùng rồi, khá đơn giản và dễ dùng).

Còn cái phần Computer Vision, có thể em sẽ giúp anh Lâm trình bày cho, cũng có khá nhiều vấn đề hay ho,:D

T&T 13-04-2006 01:08 AM

Ặc ặc, bị equation chỉnh dữ quá, từ nay em xin chừa ko nói bậy nữa :((

imaging 13-04-2006 01:58 AM

Trích:

Nguyên văn bởi T&T
Cái này equation hơi nhầm 1 tí. Đây chỉ là trường hợp vật dạng khối đặc mà thôi. Đôi lúc (có lẽ là thường xuyên), sẽ có những lỗ khác giá trị pixel (ví dụ có nhãn mác, màu sắc khác chẳng hạn) cho dù có threshole tốt đến đâu nữa.
Lúc bấy giờ chỉ còn trông đợi vào đường biên mà thôi :D

Như vậy theo bác T&T thì thuật toán của bác equation không giải quyết triệt để được vấn đề tính diện tích (trong ảnh thôi) của vật thể bị hole?. Vậy bác có thuật toán giải quyết không, xin được chỉ giáo. (Tất nhiên OpenCV tốt rồi nhưng nhiều trường hợp không dùng được và làm nặng hệ thống).

falleaf 13-04-2006 09:48 AM

1) Anh Chung Tấn Lâm
2) Cu T củ chuối, spam thiệt... hehehe...

Đùa chút thôi, F đang theo dõi và học các bạn, các anh về xử lý ảnh vì không làm về lĩnh vực này nên không biết gì nhiều

Cho F hỏi chút thôi, nếu camera thay đổi được tiêu cự thì có đo khoảng cách đến vật được không? Khi có một điểm làm gốc chuẩn bên trong camera, thì khi camera focus vào một vật nào đó, thì có thể xác định khoảng cách từ camera đến vật không nếu biết vật chuẩn và tiêu cự của camera.

Nếu được thì đầu tiên mình nên giới hạn thảo luận bài toán bằng webcam!?

sinhluc 13-04-2006 09:52 AM

neu bai toan nhu chi nhu ban noi: khoảng cách cô dịnh, da dc ma hoa vat la 1, nen là 0, moi pixel chi la mot bit,can tinh dien tich cua vật, neu khong can chinh xac lắm thi rat don gian. bạn chi can dem tong so bit 1 tren toan bo buc anh roi nhan voi dien tich thuc te cua vat the khi khi no bieu dien băng mot pixel, dien tich thuc te nay ban co the thu 1 lan la biet.
vi du mot vat co dien tich la 1 cm2 ban dem dc 100bit 1 thi moi bit mot tuong duong 1mm2, tu do ban nhan so bit mot cua mot dem dc voi 1mm2 se
Tuy nhien do lam the co nghia la minh coi 1 vat the la mot to hop khong lien nhau.
neu bạn mon tinh mot vat the la mot mang lien nhau thi phai phan tich them 1 chut

do la cach don gian nhat , con nhieu cach khac phuc tap doi hoi chinh xac cao, noi chung chi xu li phan mem la co the dat dc ket qua chinh xac den muc chap nhan dc , van de la minh can den do chinh xac nhu the nao, vi cau hoi cua ban chung chung nen minh chi co the tra loi nhu the, hay noi ro hon.

falleaf 13-04-2006 10:03 AM

Vấn đề imaging đề ra, đó là chẳng lẽ quét hết, đếm hết từng điểm. Làm như vậy thì đến tết công gô mới xong.

Tuy nhiên, vấn đề của imaging vẫn chưa rõ ở chỗ là diện tích vật thật hay số pixel trên máy nhận được?

F muốn học cái xử lý ảnh này mà xem ra hơi khó hiểu :(

equation 13-04-2006 10:09 AM

Mình không nhầm đâu bác T&T à!
 
Thực ra thuật toán Connected Component mà mình đã dùng để giải quyết vấn đề xác định vị trí 1 object bất kì trong ảnh nhị phân. Cho dù trong vật có lỗ thì nó cũng xác định được cả vật trong lỗ và bản thân vật ấy chứ không phải như T&T nói là chỉ dùng cho vật solid đâu. Mình làm cái face detection cũng phải giải quyết cả vấn đề xác định các object này. Đôi khi trong hốc mắt sau khi skin segmentation thành ảnh nhị phân vẫn còn lại những nhóm pixel giá trị 1=>trường hợp này ta có vật trong vật. Tuy nhiên Connected Component Labelling vẫn giúp ta phân biệt được các vật này với nhau chứ không nhất thiết chỉ dùng cho solid. Đây là ưu điểm của Connected Component so với chỉ dùng histogram để xác định vị trí vật trong ảnh. Bài toán giải quyết vật trong vật là 1 bài tập mà giáo sư mình cho ra khi làm program về Connected Component này. Bạn Imaging có thể yên tâm thử thuật toán này nhé. Nếu bạn cần thì mình có thể share với bạn đoạn code của Connected Conponent.

T&T 13-04-2006 01:43 PM

ĐÚng là Connected Component Labelling giúp ta phân biệt được vật trong vật, có thể cả nhiều vật lồng nhau. Tuy nhiên, mục đích của bạn imaging chỉ là tính diện tích của vật lớn mà thôi bao gồm cả các vật bên trong nữa). Như vậy, nếu làm theo phương pháp Connected Component Labelling, sau khi labelled các object xong, bạn phải cộng tất cả lại mới có vật lớn. Ví dụ như có 1 vật hình vuông màu trắng, bên trong là hình tròn màu đen. Connected Component Labelling sẽ cho ra 2 vật là hình vuông rỗng và hình tròn, trong khi ta chỉ cần tính diện tính của cả hình vuông lớn bên ngoài (đó mới là object cần tính). Có nghĩa là ta phải cộng cả 2 vật mà Connected Component Labelling xác định được, như vậy hơi tốn chút công sức :).

(Đang làm cái assignment Neural network mai nộp - sẽ bàn tiếp :))

imaging 14-04-2006 01:10 PM

Trích:

Nguyên văn bởi T&T
Muốn có được khoảng cách giữa vật và camera, cách duy nhất là phải có 2 camera trở lên (các camera này đều đã được xác định thông số) đặt ở 2 (hoặc nhiều nếu nhiều camera) vị trí khác nhau (cái này gọi là stereo vision - mình đang đau khổ với nó đây :p ). Các vị trí tương quan của camera phải được xác định Việc xác định vị trí của vật thông qua vị trí tương quan đó và hướng của vật so với camera (thông qua vị trí của nó trên hình).

Theo em được biết người ta còn sử dụng một camera quay (pan/tilt) và encoder đo góc để xác định khoảng cách từ vật tới camera.
Và để giải quyết một cách chính xác bài toán đo khoảng cách họ thường dùng 1 camera kết hợp với đo xa laser (LMS).

falleaf 14-04-2006 02:34 PM

Có thể cho mình biết rõ hơn về kỹ thuật này được không? Mình chỉ mới biết 2 kỹ thuật là dùng 2 camera và 1 camera như nói ở trên thôi. Còn kỹ thuật camera quay thì mình chưa biết, vậy bạn có thể giải thích cho mình thêm về kỹ thuật này không? Có hình ảnh mình hoạ thì càng hay.

Chúc vui

imaging 14-04-2006 11:50 PM

1 Attachment(s)
Bác F, cái kỹ thuật này em chưa thử nghiệm và đọc được đã lâu rồi, không nhớ chính xác lắm. Cái này tính toán phức tạp (robot là chính) và với cái đầu óc của "thằng bé" như em thì khó có thể hiểu được. Nhưng em hứa sẽ xem lại nhanh nhất và cài đặt thuật toán thử nghiệm. Em post bài báo lên trước nhé rồi cùng thảo luận xem có khả thi không. Kính mong các bác chỉ giáo.


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam