Tải bản đầy đủ
CHƯƠNG 3 ỨNG DỤNG XỬ LÝ ẢNH TRONG ĐIỀU KHIỂN

CHƯƠNG 3 ỨNG DỤNG XỬ LÝ ẢNH TRONG ĐIỀU KHIỂN

Tải bản đầy đủ

3.1 Hoạt động của robot
3.1.1 Nhiệm vụ
Ý tưởng tự động hoá việc xếp rỡ hàng hoá tại các nhà kho, cảng đã được
các nhà nghiên cứu trong lĩnh vực tự động hoá đề ra từ những năm cuối của thế
kỷ 20. Ngoài các nhiệm vụ định vị các sản phẩm, xây dựng các hệ nâng chuyển
trong kho cảng một nhiệm vụ rất thiết thực và không kém phần lý thú là nghiên
cứu các xe nâng hàng tự động, không có người lái đã được nhiều nhóm nghiên
cứu tự động hoá và điều khiển thực hiện. Một số tác giả đã sử dụng các cách
khác nhau như: tìm vị trí 3D của các giá đỡ hàng dựa trên các đặc điểm màu sắc
và hình học của chúng, sử dụng hai camera quang học hoặc hai laser scanner để
thực hiện tính toán khoảng cách đến đối tượng, hoặc sử dụng 1 camera để xác
định hướng và khoảng cách. Đã có một số sản phẩm xe nâng hàng có gắn camera
được điều khiển từ xa đã được đưa vào sử dụng. Người điều khiển xe thông qua
một màn hình điều khiển từ xa lái xe nâng hạ đến các vị trí cần thiết, thực hiện
các thao tác cần thiết. Tuy nhiên, cho đến nay các xe nâng hạ tự động hoàn toàn
không người lái thì mới đang ở dạng nghiên cứu và thực sự chưa có mẫu thương
phẩm nào trong thực tế.

Hình 8: Xe nâng hàng có người lái
Một xe nâng hàng từ động (thực chất là một robot) có nhiệm vụ tiếp cận
một giá đỡ hàng để nâng giá đỡ (có hàng hoặc không có hàng) di chuyển đến một
vị trí khác và hạ nó xuống. Để xe tiếp cận được giá đỡ một số thông số cơ bản
cần được cung cấp cho bộ xử lý trên xe

43

Hình 9:Giá đỡ hàng tiêu chuẩn và các kích thước (dài x rộng x cao) mm. Từ trên
xuống dưới, từ trái qua phải: 2a): châu Âu (1200 x 800 x 144) 2b): Mỹ 2c): Hàn
Quốc (1100 x 1100 x 150) 2d): Trung Quốc (1100 x 1100 x 150).

Xe tự động dùng 2 càng gắn ở đầu xe để móc vào 2 lỗ ở giá đỡ hàng.
Khoảng cách giữa hai càng đã được điều chỉnh cho đúng với khoảng cách giữa
hai lỗ trên giá đỡ. Với các pallet có chiều dài và chiều rộng khác nhau (kiểu EU
và kiểu Mỹ) trên mỗi mặt đều có 2 lỗ để móc vào nhưng kích thước và khoảng
cách giữa các lỗ không như nhau nên chương trình xử lý cần phân biệt được các
nhóm lỗ này. Với các pallet mà kích thước dài = kích thước rộng (pallet hình
vuông) như của Hàn Quốc và Trung Quốc (lục địa) thì không cần phân biệt sườn
dài hay sườn ngắn của pallet.
3.1.2 Hướng của giá đỡ hàng so với xe nâng tự động
Hệ toạ độ của chúng ta được ký hiệu với các trục Ox, Oy, Oz. Trong đó O là gốc
toạ độ.
OxyzW là hệ toạ độ của không gian thực với các trục Owxw, Oyxy, Ozxz.
Oxyzcamera là hệ toạ độ của camera với các trục Ocxc, Ocxc, Ocxc.
Oxyzfork là hệ toạ độ của càng xe nâng với các trục Ofxf, Ofxf, Ofxf.
Oxyzbody là hệ toạ độ của xe nâng với các trục Obxb, Obxb, Obxb.

44

Hình 10: Các hệ tọa độ

Nếu chúng ta chiếu song song xe nâng và giá đỡ lên mặt phẳng O wxwyw
thì góc giữa hình chiếu của trục đối xứng s-s của giá đỡ với trục O byb của xe
nâng được gọi là hướng của xe nâng với giá đỡ (hoặc ngược lại).
3.1.3 Khoảng cách từ xe tự động đến giá đỡ hàng
Đây là khoảng cách từ một điểm trên xe nâng đến một điểm trên giá đỡ.
Chúng ta có thể định nghĩa đó là khoảng cách giữa tâm hình học theo ba chiều
của xe nâng đến tâm hình học theo ba chiều của giá đỡ. Nó là khoảng cách từ
tâm điểm tiêu cự của camera gắn trên xe nâng đến điểm tâm hình học của mặt
trước của giá đỡ.
3.1.4 Xác định khoảng cách
Mô hình xác định khoảng cách sử dụng camera như sau:

45

Hình 11: Mô hình xác định khoảng cách sử dụng camera với hai mặt phẳng ảnh
và mặt phẳng đối tượng song song với nhau.

Giả sử mặt phẳng ảnh và mặt đối tượng song song với nhau. Các tia chiếu
và truc Ox cùng trong một mặt phẳng. Quan hệ giữa khoảng cách thực từ tiêu
điểm ống kính đến mặt phẳng đối tượng D và ảnh của đối tượng h, kích thước
thực của đối tượng H và tiêu cự f của ống kính. Các kích thước tính bằng
milimet.
=
Từ đó suy ra :
n: số pixel của ảnh biểu diễn kích thước theo hướng h.
k: hệ số thể hiện số milimét/pixel.

W: Kích thước tấm sensor cảm biến ảnh
N: độ phân giải của cảm biến ảnh.
Trong thực tế chúng ta thường sử dụng chương trình xử lý ảnh bằng máy tính
(PC hoặc một hệ thống tính toán khác) khi đó chúng ta ánh xạ tấm sensor cảm
biến lên một màn hình máy tính. Lúc này:
W là kích thước của màn hình theo phương tính toán tính bằng milimét.
N: Tổng số pixel của màn hình theo phương tính toán.

46

Trong trường hợp mặt phẳng ảnh của camera và mặt phẳng đối tượng
không song song với nhau chúng ta có mô hình. Trong mô hình này θ là góc
nghiêng của camera với mặt phẳng ngang theo phương đứng (góc til), Φ là góc
lệch của camera với trục đối xứng của đối tượng theo phương ngang (góc pan).

Hình 12: Mô hình camera pinhole khi mặt phẳng ảnh không song song mặt
phẳng đối tượng
3.1.5 Kích thước ảnh thực của đối tượng
Do tính đồng dạng của ảnh trên mặt phẳng ảnh và đối tượng trên mặt
phẳng đối tượng ta có thể xem xét quan hệ giữa kích thước thực X, Y và ảnh của
nó trên hai hướng tại mặt phẳng song song với mặt phẳng ảnh. Như vậy nếu ký
hiệu:
Ox là kích thước ảnh theo chiều ngang (tính bằng mm),
x là kích thước ảnh ngang - horizontal image dimension (tính bằng pixels),

47

Sx là kích thước sensor theo chiều ngang - the horizontal sensor size (tính bằng
mm),
Px kích thước sensor ngang - the horizontal sensor size tính bằng pixels.
Oy là kích thước ảnh đứng - vertical image dimension (tính bằng mm),
y là kích thước ảnh đứng - vertical image dimension (tính bằng pixels),
Sy kích thước sensor đứng - the vertical sensor size (tính bằng mm) và
Py là kích thước sensor đứng - vertical sensor size tính bằng pixels.
Chúng ta có quan hệ:

Khi đã biết f, Px, Sx,x, Ox chúng ta có thể tính ra D

Khoảng cách từ tiêu điểm đến đường tâm của đối tượng theo phương X có thể
được tính toán như sau:
 Chưa biết góc θ
Theo thông số kỹ thuật đã cho của ống kính và chiều cao hình học
của vị trí đặt camera chúng ta có kích thước và khoảng cách từ camera đến
đối tượng chiếu trên mặt phẳng xOy:

Đây là khoảng cách mà bộ xử lý điều khiển xe nâng hạ tự động cần biết để
điều khiển khi tiếp cận đến giá đỡ.
Các góc θ, λ và Φ có thể được tính từ các giá trị đã biết

48

 Trong trường hợp đã biết góc θ

Các khoảng cách đối tượng thực có thể được tính từ các các góc và các giá trị đã
biết như sau:

3.2 Ứng dụng xử lý ảnh để tính khoảng cách
3.2.1 Mô tả bài toán
Mục đích của bài toán là sử dụng camera thu ảnh và dựa vào ảnh để đưa ra
khoảng cách từ tâm điểm tiêu cự của camera gắn trên xe nâng đến điểm tâm hình
học của mặt trước của đối tượng với hai mặt phẳng ảnh và mặt phẳng đối tượng
song song với nhau và góc giữa camera gắn trên robot và đối tượng là vuông góc.
3.2.2 Quá trình thu ảnh và các yêu cầu của hệ thống
3.2.2.1 Đọc ảnh
Quá trình đọc ảnh trong C# thường là ảnh 24 bit, tức là mỗi pixel 24
bits=3bytes. Mô tả như sau: Pixel đầu tiên của ảnh chiếm 3 byte đầu(0,1,2), pixel
thứ 2 chiếm 3 byte tiếp(3,4,5), cứ như thế... Để biết ảnh bm có kích thước bao
nhiêu, C# cung cấp 2 thuộc tính: bm.Width: số pixel trên một hàng(độ rộng) và
bm.Height: số hàng(độ cao). Như vậy, mỗi hàng của bức ảnh sẽ dùng hết
bm.Width*3 bytes để lưu thông tin(do mỗi pixel 3 byte). Tuy nhiên khi lưu vào

49

máy tính thì mỗi hàng của ảnh phải dùng nhiều hơn số byte đó để lưu, vì mục
đích lưu cả thông tin của biên. Để biết thức sự số byte này là bao nhiêu, đầu tiên
phải chuyển bm sang một lớp đệm, lớp BitmapData. Ta sử dụng kỹ thuật
LockBits.
Rectangle rec= new Rectangle (0, 0, bm.Width, bm.Height);
BitmapData

bmData=

bm.LockBit(rec,

ImageLockMode.ReadWrite,

PixelFormat.Format24bppRgb);
Phương thức LockBits sẽ chuyển từ 1 ảnh, sang 1 vùng nhớ (bmData). Trên
ảnh bm, ta chỉ có thể xem nó, chứ không thể chỉnh sử pixel. Muốn sửa, phải
chuyển nó sang lớp BitmapData, trên đó có các thứ cần thiết để can thiệp vào
từng điểm ảnh.
Trong máy tính ảnh được biểu diễn như một dãy các byte nhớ đặt liên tiếp
nhau. Ta phải đọc file ảnh này vào một ma trận 2 chiều sao cho số hàng bằng
chiều cao của ảnh, số cột bằng chiều rộng của ảnh.
Tiến hành đọc các pixel của ảnh và tiến hành xử lý trên ma trận ảnh nhị phân
đã chuyển đổi.
3.2.2.2 Lọc nhiễu
Là phần tiền xử lý nhằm loại bỏ các nhiễu cơ bản trong quá trình thu ảnh.
Có rất nhiều loại nhiễu như: nhiễu cộng (additive noise), độc lập (independent),
nhiễu nhân, nhiễu đốm (speckle noise), nhiễu muối tiêu (salt-pepper noise).
Đối với nhiễu cộng ta dùng mạch xử lý tuyến tính để lọc nhiễu, còn đối với nhiễu
nhân thì ta dùng mạch xử lý phi tuyến để lọc nhiễu.
Đối với nhiễu đốm, nhiễu muối tiêu ta sử dụng thuật toán lọc trung vị. Ý tưởng
chính của thuật toán như sau: ta sử dụng một cửa sổ lọc (thường là ma trận 3×3)
quét qua lần lượt từng điểm ảnh của ảnh đầu vào input. Tại vị trí mỗi điểm ảnh
lấy giá trị của các điểm ảnh tương ứng trong vùng kích thước của ảnh gốc “lấp”
vào ma trận lọc. Sau đó sắp xếp các điểm ảnh trong cửa sổ này thành 1 dãy x 1 ;x2;

50

…;nn (tăng dần hoặc giảm dần tùy ý). Và tìm trung vị cho dãy nếu n lẻ thì nếu n
chẵn thì

hoặc . Cuối cùng ta gán giá trị cho các điểm ảnh theo:

I(p)=
3.2.2.3 Phân ngưỡng
Đây là quá trình phân vùng ảnh dựa theo ngưỡng biên độ. Đặc tính đơn
giản nhất và có thể hữu ích nhất của ảnh đó là biên độ của các tính chất vật lý của
ảnh như: độ phản xạ, độ truyền sang, màu sắc hoặc đáp ứng đa phổ. Như vậy, có
thể dung biên độ để phân vùng khi mà biên độ đủ lớn đặc trưng cho ảnh. Thí dụ,
biên độ trong bộ cảm biến ảnh hồng ngoại có thể phản ánh vùng nhiệt độ thấp
hay vùng nhiệt độ cao hơn. Kỹ thuật phân ngưỡng theo biên độ rất có ích đối với
ảnh nhị phân như văn bản in, đồ họa, ảnh màu…
Trước hết cần đưa về ảnh nhị phân một cách đơn giản bằng một giá trị
ngưỡng. các điểm ảnh ở trên một ngưỡng T sẽ là đối tượng còn dưới ngưỡng T sẽ
là những điểm nền. ta có một hàm biến đổi tổng quát:
Hàm này được hiện thực hóa bằng một bảng dò tìm(LUT- Look Up Table) trên
một ảnh xám B(x,y) được biến đổi thành một ảnh nhị phân A r(x,y), hay còn gọi
là một quá trình nhị phân hóa. Với phương pháp ngưỡng trên đây phân loại điểm
ảnh dựa trên đặc tính chất “giá trị xám” của các điểm đối tượng và các điểm nền.
Đặc điểm của vùng lân cận điểm ảnh không được quan tâm đến. Khi quyết định
xem một điểm ảnh nào đấy có thuộc về đối tượng hay không phương pháp này
chỉ hướng theo giá trị xám của một điểm ảnh. Một kết quả như ý đòi hỏi có một
ngưỡng tối ưu được xác định, ngưỡng này có thể dễ dàng tìm được ở nhiều ứng
dụng.
Để dễ dàng xử lý trên ảnh của giá đỡ hàng (hàng) ta tiến hành phân
ngưỡng ảnh ban đầu thành gồm 2 màu đen và trắng với ngưỡng T = 128. Quá
trình tạo ảnh đen trắng sẽ giảm bớt nhiễu trên ảnh. Quá trình chuyển anh ban đầu
về anh đen trắng (quá trình phân ngưỡng) được thực hiện như sau:
 Chuyển ảnh gốc về ảnh xám.
 Biến đổi ảnh xám về ảnh nhị phân
51

for (y = 0; y < bm.Height - 1; y++)
{
for (x = 0; x < bm.Width - 1; x++)
{
c = bm.GetPixel(x, y);
if (c.R < band)
bitmap.SetPixel(x, y, Color.FromArgb(0, 0, 0));
else
bitmap.SetPixel(x, y, Color.FromArgb(255, 255, 255));
}
Qua các bước tiền xử lý (lọc nhiễu) và phân ngưỡng ta thu được ảnh gồm
2 màu đen và trắng. Ta lấy giá trị 0 và 1 của ảnh đen trắng lưu vào ma trận 2
chiều với số hàng là chiều cao của ảnh số cột là chiều rộng của ảnh. Ta tiến hành
xử lý trên ma trận nhị phân thu được.

Hình 13:Ảnh gốc và ảnh sau khi thực hiện phân ngưỡng
Giả thiết mô hìnhxử lý được cho như sau:

52

Hình 14: Mô hình chương trình xử lý
Mô hình bao gồm camera được gắn trên robot, giá đỡ hàng, hàng, hệ thống đèn
chiếu sáng, máy tính điều khiển robot…Phải đảm bảo yêu cầu :
-

Hệ thống đèn chiếu sáng phải đảm bảo độ sáng để không làm nhòe ảnh

-

thu được.
Camera đặt chính diện với giá đỡ hàng (hàng) đảm bảo khung nhìn của
camera bao quát toàn bộ giá đỡ (hàng) trên nền trắng. Và khi đó quá
trình thu ảnh được thực hiện liên tục.

Dựa vào ảnh ta đưa ra các thông số về khoảng cách. Thông số về khoảng
cách được đưa ra dựa vào ảnh nên chất lượng ảnh sẽ quyết định đến sai số về
khoảng cách tính toán so với khoảng cách tính toán trong thực tế do đó ảnh thu
nhận được phải đảm bảo nét và ít nhiễu hay không có nhiễu, trong khi đó hệ
thống chiếu sáng không phải thiết kế phức tạp.
3.3 Tính toán khoảng cách dựa trên ảnh thu được
Chương trình xử lý ảnh đưa ra được chiều cao của ảnh để dựa vào đó ta có
thể áp dụng để tính khoảng cách dựa trên mô hình camera pihole.

53