Xác định một pixel đen có thuộc điểm tô:

Một phần của tài liệu luận văn công nghệ thông tin thiết kế hệ thống nhập điểm tự động - svth trần viết khôi (Trang 46)

5. Xác định điểm tô đen :

5.4.2. Xác định một pixel đen có thuộc điểm tô:

Giải thuật xác định một pixel đen có thuộc điểm tô đen hay không được mô tả như sau :

Bước 1:

Kiểm tra trên pixel đen đó có còn pixel đen nào nữa hay không. Nếu có thì thì dới toạ độ y của pixel đen đó lên pixel đen phía trên.

Bước 2:

Vòng lặp để kiểm tra 12 pixel trên hàng dọc của pixel đen và vị trí kiểm tra phải nhỏ hơn chiều cao. Nếu đúng nhảy xuống bước 3, nếu không nhảy xuống bước 6.

Bước 3:

Vòng lặp để kiểm tra 12 pixel trên hàng ngang của pixel đen và vị trí kiểm tra phải nhỏ hơn chiều rộng. Nếu đúng thì nhảy xuống bước 4 nếu không thì nhảy tới bước 5.

Bước 4:

Kiểm tra pixel đen tai vị trí trên nếu là pixel đen thì thực hiện các công việc sau

 Kiểm tra nếu đã xuất hiện pixel đen trên dòng đó và hiệu số của pixel đen hiện tại với pixel đen trước đó lớn hơn 3 (nghĩa là có 3 pixel trắng liên tiếp trên dòng đó) bật cờ dừng và ngưng quét, nhảy xuống bước 5.

 Kiểm tra nếu đã xuất hiện pixel đen trên dòng đó và hiệu số của pixel đen hiện tại với pixel đen trước đó lớn hơn 4 (nghĩa là có 4 pixel trắng liên tiếp trên dòng đó) xác định đây không phải ô điểm được tô và ngừng chương trình.

 Kiểm tra nếu cờ xuất hiện điểm đen chưa bật thì bật.  Kiểm tra nếu đã xuất hiện pixel đen trên dòng đó và

hiệu số của pixel đen hiện tại với pixel đen trước đó lớn hơn 1 (nghĩa là có 1 pixel trắng giữa hai pixel đen trên dòng đó) thì

 Tăng số lần xuất hiện pixel trắng này lên 1.  Kiểm tra nếu số lần xuất hiện lớn hơn 3 thì xác

định đó không phải là điểm đã được tô và dừng chương trình.

 Kiểm tra nếu đã xuất hiện pixel đen trên dòng đó và hiệu số của pixel đen hiện tại với pixel đen trước đó lớn hơn 2 (nghĩa là có 2 pixel trắng giữa hai pixel đen trên dòng đó) thì

 Tăng số lần xuất hiện 2 pixel trắng này lên 1  Kiểm tra nếu số lần xuất hiện lớn hơn 2 thì xác

định đó không phải là điểm đã được tô và dừng chương trình.

 Tăng số chấm đen trên dòng đó lên 1.  Lưu lại vị trí chấm đen hiện tai. Quay lại bước 3.

Bước 5:

Kiểm tra nếu i=0 thì xcd-=(10-chamden)/2

Kiểm tra nếu số chấm đen trên một dòng bằng 0 và chỉ mới kiểm tra dưới 3 dòng thì xác định đây không phải là mốc và thoát khỏi chương trình.

Kiểm tra nếu số chấm đen trên một dòng bằng 0 và đã quét được 4 dòng trở lên thì ngưng quét và nhảy xuống bước 6.

Kiểm tra nếu số chấm đen trên một dòng nhỏ hơn 4 và đã quét và đang quét ở dòng ở dòng 3 hoặc 4 thì xác định đây không phải chấm đen và thoát khỏi chương trình.

Kiểm tra nếu số pixel đen trên dòng đó lớn hơn số pixel đen trên các dòng khác thì số pixel đen lớn nhất chính là số pixel đen trên dòng đó.

Tính tổng số pixel trên các dòng.

Kiểm tra cờ dừng nếu đúng thì nhảy xuống bước 6 Nhảy về bước 2.

Bước 6:

Kiểm tra nếu số pixel đen lớn nhất trên từng dòng mà nhỏ hơn 5 thì đó không phải là điểm tô và dừng chương trình.

Kiểm tra xem tổng số pixel đen có đạt đến trọng số điểm mốc hay không nếu có thì tính toạ độ tâm của mốc và trả về mốc. Nếu không thì thoát.

Toado = xcd + ycd * width K=0

While(k<10 and ( width – k – xcd) >0) Begin

If(pixels[toado+k]=1) then Begin

if(flag=0) then flag=1

if(k-bcd>1 and flag=1) then skt+=k-bcd-1

bcd=k End

K=k+1 End

dodoi=(chamden+skt)/2 // số chấm đen phía trên sdd=0

// lưu vị trí chân đen xuất hiện trước bcd=0

k=0 while(k<7) Begin

toado=xcd+dodoi+(ycd-k)*width

if(toado<0) then break if(pixels[toado]=1) then Begin sdd=sdd+k-bcd; bcd=k; End K=k+1 End Ycd = ycd - sdd Tongchamden = 0 i=0

While ( i<12 and (height-i-ycd >0) Begin toado=xcd+(ycd+i)*width chamden=0 lan = 0 lan1 = 0 bcd = 0 flag = 0 flagd = 0 skt =0

While ( j<12 and (width –j – xcd>0) Begin

If pixel[toado+j]=1 then Begin

Pixel[toado+j]=0

If j-bcd>4 and flag==1 then

Begin

Break;

End

If flag = 0 then flag=1 If j-bcd>1 and flag = 1

Begin

lan++

If lan>3 then return 0

End

If j-bcd>2 and flag=1 then

Begin

lan1++

If lan1>2 then return 0

End

chamden=chamden+1

bcd=j

End End

If chamden=0 and i<=3 then return 0 If chamden=0 and i>=4 then break

If chamden<4 and i>2 and i<5 then return 0 If max<chamden then max=chamden

Tongchamden = Tongchamden +chamden If flagd=1 break

End

If max<5 then return 0

If Tongchamden >100 and Tongchamden<196 then Begin xt=(14/2)+xcd yt=(i/2)+ycd Return 1 End Return 0

5.5.Đoạn chương trình minh hoạ :

Một phần của tài liệu luận văn công nghệ thông tin thiết kế hệ thống nhập điểm tự động - svth trần viết khôi (Trang 46)

Tải bản đầy đủ (PDF)

(73 trang)