2012-02-19 13 views
8

Tôi đang làm việc trên một hệ thống ANPR sử dụng OpenCV và đã thấy trong một vài bài viết về cách thực hiện phân đoạn ký tự. Ý tưởng là tạo biểu đồ thể hiện sự tập trung vào màu sắc trên hình ảnh.Biểu đồ tập trung màu OpenCV

Làm cách nào để thực hiện việc này?

enter image description here

Đây là hình ảnh mà tôi có:

enter image description here

tôi cần để phát hiện vị trí của các lĩnh vực đen như hình trên để xác định từng nhân vật.

Tôi đã thử thêm các giá trị lên pixel bằng pixel nhưng tôi đang thực hiện việc này trên Android và thời gian thực hiện điều này là không thể chấp nhận.

+0

Hình ảnh này là gì? Làm thế nào để bạn làm gì? Vui lòng thử thêm các chi tiết khác về những gì bạn thực sự có và những gì bạn muốn làm. –

+0

Vì vậy, bạn hiện có vị trí của các khu vực màu đen? Bạn có thể đặt một đoạn mã cho ý bạn bằng cách "thêm giá trị pixel theo pixel" không? –

+0

Nếu tốc độ là vấn đề duy nhất của bạn thì tôi khuyên bạn nên chia tỷ lệ hình ảnh đầu vào thành độ phân giải thấp hơn 2 hoặc thậm chí 4. Hình ảnh đầu vào bạn hiển thị có độ phân giải rất cao cho tác vụ bạn muốn thực hiện. –

Trả lời

6

Ok, nó một tháng sau đó, nhưng tôi viết cho bạn một chút mã (trong python) cho việc này;)

(Giả sử bạn là ngay sau khi biểu đồ mật độ hình ảnh)

import cv 

im2 = cv.LoadImage('ph05l.jpg') 
width, height = cv.GetSize(im2) 
hist = [] 
column_width = 1 # this allows you to speed up the result, 
        # at the expense of horizontal resolution. (higher is faster) 
for x in xrange(width/column_width): 
    column = cv.GetSubRect(im2, (x * column_width, 0, column_width, height)) 
    hist.append(sum(cv.Sum(column))/3) 

Để tăng tốc độ, bạn không cần thay đổi các tập tin hình ảnh, chỉ cần thay đổi chiều rộng của mẫu (column_width trong kịch bản), rõ ràng là bạn mất một số độ phân giải nếu bạn thực hiện điều này (như bạn có thể thấy trong hình bên dưới).

Trong hình ảnh, tôi hiển thị kết quả (vẽ đồ thị hist) với tệp của bạn, sử dụng column_width của 1, 10 và 100. Chúng chạy lần lượt 0,11, 0,02 và 0,01 giây.

Tôi đã viết nó trong PIL quá, nhưng nó chạy khoảng 5 đến 10 lần chậm hơn.

character density histograms

+0

Điều này thật tuyệt vời –

-1

Check-out OpenALPR (http://www.openalpr.com). Nó phân đoạn nhân vật theo cùng một cách (sử dụng biểu đồ). Nó khá nhanh trên một máy tính để bàn, nhưng tôi không chắc nó sẽ nhanh như thế nào trên Android.