hiện thời có sai khác nhiều.
a) Ảnh khung hình liền trước, b) Ảnh khung hình hiện thời, c) Ảnh đen trắng dùng kỹ thuật trừ ảnh liền kề, với ngưỡng là 20.
c- ảnh thu được khi trừ ảnh
Theo kết quả thực nghiệm cho thấy: Nếu chúng ta giảm giá trị ngưỡng thì sẽ tăng được độ phân biệt giữa các khung hình gần giống nhau, nhưng cũng sẽ làm tăng vùng khác nhau đối với khung hình có độ khác nhau nhiều, do đó sẽ làm cho quá trình xử lý phức tạp hơn. Như vậy, với kỹ thuật trừ khung hình liền kề chúng ta có được nhận xét sau:
Chưa tối ưu được quá trình xử lý, vì phải xử lý tất cả khung hình có trong đoạn video mặc dù chúng không có sự thay đổi (các đối tượng không chuyển động).
Thu được những thay đổi nhỏ đối với những đối tượng có chuyển động chậm và có thể là không phân biệt được vì thay đổi ít, vì vậy mà khó có thể lấy được toàn bộ đối tượng chuyển động.
Chứa nhiều nhiễu, do thời tiết, độ tương phản, độ bóng làm thay đổi giá trị màu ở những vùng không chuyển động.
Vì vậy, chúng ta sẽ không thực hiện trừ khung hình liền kề để phát hiện đối tượng. Dưới đây chúng ta sẽ xem xét một hướng tiếp cận kết hợp: kỹ thuật trừ khung hình, đo độ thay đổi, xét vị trí, và kỹ thuật dò biên ảnh đa cấp xám để nâng cao hiệu quả phát hiện đối tượng chuyển động.
3.3.6.2 Phát hiện đối tượng chuyển động theo hướng tiếp cận kết hợp
Đây cũng là một hướng tiếp cận dựa trên kỹ thuật trừ ảnh, độ đo tương tự, xét vị trí tương đối giữa các vùng thay đổi giá trị màu ở các khung hình, phát hiện biên ảnh đa cấp xám. Hướng tiếp cận này được trình bày như sau:
Đầu tiên, phát hiện vùng thay đổi về giá trị màu giữa các khung hình theo kỹ thuật trừ ảnh điểm. Nếu 2 điểm được so sánh mà có giá trị khác nhau nhỏ hơn một ngưỡng cho trước thì chúng được coi là giống nhau, ngược lại chúng được coi là khác nhau, và được đánh dấu lại vào ảnh Iwb. Quá trình khử nhiễu bằng các cửa sổ 5x5, 3x3 trên ảnh đen trắng Iwb và xác định độ dịch chuyển sẽ khử nhiễu do thời tiết, độ từng phận. Tiếp theo, ảnh Fgreyc được phát hiện biên cho kết quả là ảnh Feg (ảnh biên). Kết hợp Feg với Iwb, chúng ta sẽ loại bỏ được tất cả những điểm biên nằm ngoài vùng chuyển động (có màu trắng), lấy được biên của đối tượng chuyển động. Những điểm biên của Feg và lân cận vùng trắng sẽ được đánh dấu lại. Cuối cùng chúng ta xử lý điểm biên được đánh dấu để xác định được đối tượng chuyển động.
Dưới đây là bước thực hiện của thuật toán phát hiện đối tượng chuyển động theo hướng tiếp cận kết hợp.
Bước 1 : Trừ ảnh và đánh dấu Iwb
Bước 2 : Lọc nhiễu trên ảnh Iwb, phát hiện độ dịch chuyển Bước 3 : Phát hiện biên Feg
Bước 4 : Kết hợp Fgreyc với Iwb
Tiếp theo, chúng ta sẽ xem xét cụ thể hơn các bước thực hiện của hướng tiếp cận kết hợp dựa trên kỹ thuật trừ điểm ảnh và biên.
3.3.6.2.1 Trừ ảnh và đánh dấu Iwb
Đây là bước phát hiện vùng khác biệt dựa trên kỹ thuật trừ điểm ảnh, giá trị ngưỡng Threshold = 20. Tiến hành trừ từng điểm ảnh của Fgreyc với Fgreyp Khác với kỹ thuật trừ ảnh liền kề, trong quá trình trừ điểm ảnh, chương trình sẽ đếm số điểm Count giống nhau trên toàn vùng ảnh. Nếu giá trị tuyệt đối của hiệu số Count với Isize (kích thước ảnh) lớn hơn một giá trị ngưỡng thì được coi là khác nhau, ngược lại 2 khung hình được coi là giống nhau. Do đó, quá trình xử lý chỉ xem xét với những khung hình khác nhau đáng kể.
3.3.6.2.2 Lọc nhiễu và phát hiện độ dịch chuyển
Đây là bước để hạn chế được các vùng đốm dựa theo cửa sổ lọc nhiễu được chọn là 5x5, 3x3 và vị trí thay đổi của vùng ảnh. Một tập Iwb được xử lý để lấy được vị trí của vùng sáng. Nếu vị trí của vùng sáng thay đổi nhỏ hơn một giá trị ngưỡng thì được coi là nhiễu, và lập tức được loại bỏ. Kết quả chúng ta có được ảnh đen trắng Iwb được lọc. Vùng sáng có độ lớn 1 điểm ảnh sẽ được loại bỏ bởi cửa sổ 3x3.
Hình 3.4 dưới đây minh họa kết quả của ảnh Iwb chưa lọc nhiễu và đã được lọc nhiễu.
a- khung hình liền trước Fpre b- khung hình hiện thời Fcur
c- ảnh thu được khi trừ ảnh d- ảnh thu được sau lọc nhiễu
Hình 3.10. a), b) là 2 khung hình có độ sai khác thỏa mãn ngưỡng, c) Ảnh Iwb chưa lọc nhiễu, d) là ảnh Iwb sau khi lọc nhiễu
3.3.6.2.3 Kết hợp ảnh Fgreyc với Iwb
Ảnh sau khi đã được phát hiện biên Feg được xếp chồng với ảnh đen trắng Iwb. Vùng đen trắng kết hợp với điểm biên sẽ cho ta được tập hợp các điểm bao quanh vùng chuyển động. Những điểm biên của Feg gần với vùng trắng của Iwb được đánh dấu lại trên Fgreyc.
3.3.7 Thuật toán phát hiện vận động toàn diện của đối tượng Thu ảnh từ camera và lưu trữ dưới dạng file Video: Thu ảnh từ camera và lưu trữ dưới dạng file Video:
Bước 1: Xác định tên tập tin lưu trữ, thiết lập (xác định) số hiệu khung ảnh khởi đầu và số hiệu khung ảnh cuối cùng, đồng thời xác định tốc độ khung ảnh trong video.
Bước 2: Đọc dữ liệu ảnh và lưu vào tập tin ảnh (thời gian đợi lưu ảnh) Bước 3: Nếu là khung ảnh cuối cùng thì dừng việc lưu ảnh,
ngược lại thì quay lại bước 2.
Lược đồ:
Lược đồ 3.2: Thu ảnh từ camera và lưu trữ
Phát hiện đối tượng vận động
Bước 1: Lấy dữ liệu về điểm ảnh của khung ảnh
Bước 2: So sánh với dữ liệu điểm ảnh nền được chọn ban đầu
Bắt đầu
Nhập tên tập tin lưu trữ Đặt số khung ảnh bắt đầu
Đặt số khung ảnh cuối Đặt tốc độ khung ảnh
Đọc dữ liệu điểm ảnh
Lưu vào tập tin ảnh Đợi lưu ảnh Khung ảnh kế tiếp Khung ảnh cuối cùng? Kết thúc đúng sai
Bước 3: Nếu có sự sai khác lớn hớn ngưỡng cho phép thì điểm ảnh nằm trong đối tượng vận động, ngược lại thì điểm ảnh nằm ngoài đối tượng vận động.
Bước 4: Nếu là điểm ảnh cuối cùng thì kết thúc, nếu chưa thì quay lại bước 1.
Lược đồ:
Lược đồ 3.3: Phát hiện đối tượng vận động
Đánh giá vận động của đối tượng
Bước 1: Xác định tên tập tin vào, đặt số hiệu khung ảnh bắt đầu và số hiệu khung ảnh cuối cùng
Bước 2: Lấy khung ảnh đầu tiên, phát hiện vùng đối tượng
Bước 3: Nếu đúng là khung ảnh cuối cùng thì lưu dữ liệu vận động của đối tượng và kết thúc, nếu không đúng thì sang bước 4.
Bước 4: Lấy khung ảnh kế tiếp, phát hiện vùng đối tượng, tính toán vùng vận động sai khác của đối tượng, đánh giá sự vận động của đối tượng và chuyển sang bước 3.
Bắt đầu
Lấy dữ liệu về điểm ảnh ảnh
So sánh với dữ liệu đểm ảnh nền
Điểm ảnh nằm bên ngoài đối tượng Điểm ảnh bên
trong đối tượng
Sai khác lớn hớn mức ngưỡng? Kết thúc đúng sai Điểm ảnh cuối cùng? đúng sai
Lược đồ:
Lược đồ 3.4: Đánh giá vận động của đối tượng
Bắt đầu
Xác định tên tập tin dữ liệu Đặt số khung ảnh bắt đầu Đặt số khung ảnh cuối cùng Lấy khung ảnh đầu tiên ảnh Phát hiện vùng đối tượng
ảnh Lưu dữ liệu vận động Khung ảnh cuối cùng? Kết thúc đúng sai Lấy khung ảnh kế tiếp
Phát hiện vùng đối tượng ảnh
Tính toán sai khác đối tượng vận động Đánh giá sự vận động
3.3.8 Chương trình cài đặt
Đã cài đặt và thử nghiệm đạt kết quả tốt cho một số kỹ thuật nghiên cứu liên quan đến phát hiện chuyển động. Sau đây là một số hình ảnh mô tả về chương trình cài đặt.
Hình 3.11. Cửa sổ chương trình làm việc
Hình 3.13. Hiển thị thông tin về File Avi đang thao tác
KẾT LUẬN
Từ dữ liệu thu được qua camera quan sát hoạt động của bò sữa lưu trữ dưới dạng file video AVI lưu trữ trên máy tính rồi tiến hành tìm hiểu, nghiên cứu các vấn đề liên quan. Thông qua cài đặt và thử nghiệm trên một số file AVI thu được, tiến hành áp dụng các phương pháp trừ ảnh, tách nền [17] với ngưỡng thử nghiệm để trích xuất ra vùng chuyển động của đối tượng.
Với vùng ảnh chuyển động của đối tượng thu được trong video ta tiến hành đánh giá để tìm ra vùng chuyển động đặt trưng [19] quan tâm (trích xuất vùng đặt trưng và lọc theo thời gian). Vùng chuyển động đặt trưng này được tính toán qua từng giai đoạn để ước lượng mức độ vận động [22] của đối tượng.
Với trạng thái bình thường thì mức độ vận động của bò sữa là ổn định và tương đối, vì vậy khi tính toán vùng chuyển động sẽ ổn định theo thời gian. Khi có trạng thái bất thường (động dục, đau ốm) thì sự vận động của bò sữa có sự thay đổi. Số lượng vận động có thể giảm xuống đột ngột hoặc tăng lên bất thường, căn cứ vào dấu hiệu này ta có thể đưa ra cảnh báo kịp thời.
Trong khuôn khổ của luận văn này, mục tiêu của đề tài là tìm hiểu và nghiên cứu một số kỹ thuật, phương pháp trong việc nhận diện, tìm hiểu sơ bộ một số hành động của bò sữa để từ đó dự đoán hành vi của nó.
Luận văn đã giới thiệu một số vấn đề cơ bản trong xử lý ảnh như: các vấn đề cơ bản trong xử lý ảnh, các kĩ thuật liên quan đến trừ nền trong xử lý Video, các kỹ thuật cơ bản trong việc đánh giá vận động của đối tượng trong Video.
Luận văn đã cài đặt thành công một số kỹ thuật phát hiện chuyển động, các kĩ thuật trừ nền cơ bản, và kĩ thuật đánh giá vận động toàn diện của đối tượng là bò sữa trong Video nhằm đưa ra cảnh báo cần thiết, kịp thời cho công tác theo dõi hoạt động của bò sữa.
Bên cạnh những kết quả đạt được, hướng nghiên cứu tiếp theo sẽ nghiên cứu sâu hơn các đánh giá chi tiết từng cử chỉ và biểu hiện của đối tượng hoạt động trong Video, để từ đó có thể phục vụ tốt hơn cho công việc theo dõi và đánh giá vận động.
Bên cạnh đó cũng hoàn thiện việc cài đặt các kĩ thuật liên quan trong luận văn này, từ đó nghiên cứu tìm ra các thuật toán tối ưu cho đánh giá vận động của động vật, đặc biệt là bò sữa.
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Kỷ yếu hội thảo quốc gia, Một số vấn đề chọn lọc của công nghệ thông tin, Nhà xuất bản khoa học và kỹ thuật, tháng 8-2005
[2]Lương Mạnh Bá, Nguyễn Thanh Thủy Nhập môn xử lý ảnh số, Nhà xuất bản khoa học và kỹ thuật, Hà Nội 2006
[3] Mai Cường Thọ, Bài giảng xử lý ảnh số [4]Nguyễn Duy Nhật Viên, Multimedia, 7-2006
[5]Nguyễn Thanh Bình, Võ Nguyễn Quốc Bảo, Xử lý âm thanh và hình ảnh, 2007 [6]PGS. TS Đỗ Năng Toàn, Bài giảng xử lý ảnh số, 2007
[7] Phạm Thượng Cát, Những thành tựu đã đạt được trong nghiên cứu phát triển công nghệ tự động hóa 30 năm qua tại viện công nghệ thông tin, Viện Công Nghệ
Thông tin.
Tiếng anh
[8] Chueh-Wei Chang and Suh-Yin Lee (1996), Video Content Representation, Indexing, and Matching in Video Information Systems, journal of visual communication and image representation.
[9] Ming Gao-Phillip Bridgman and Sunil Kumar (2003), Computer Aided Prostate Cancer Diagnosis Using Image Enhancement and JPEG2000.
[10] Ian T. Young, Jan J. Gerbrands, Lucas J. van Vliet (1998), Fundamentals of Image Processing, The Netherlands at the Delft University of Technology
[11] Todd R. Reed (2005), Digital Image Sequence Processing, Compression and Analysis, University of Hawaii at Manoa Honolulu, HI.
[12] Ling Guan, Sun-Yuan Kung, Jan Larsen (2001), Multimedia Image and Video Processing, CRC Press LLC.
[13] Paul Browne, Alan F Smeaton, Noel Murphy, Noel O’Connor, Seán Marlow, Catherine Berrut, Evaluating and Combining Digital Video Shot Boundary
Detection Algorithms, Centre for Digital Video Processing Dublin City university Dublin 9, Ireland
[14] Syed Ali Khayam (2003), The Discrete Cosine Transform (DCT): Theory and Application, Department of Electrical & Computer Engineering Michigan State University.
[15] Iain E. G. Richardson, H.264 and MPEG-4 Video Compression, The Robert Gordon University, Aberdeen, UK
[16] H.R. Wu and K.R. Rao (2006), Digital Video Image Quality and Perceptual Coding, Taylor & Francis Group, LLC
[17] Alan M.MCIvor, Background Subtraction Techniques, PO Box128- 221,Remuera,Auckland,NewZealand
[18] Yi-Wen Chen, Ming-Ho Hsiao, Hua-Tsung Chen,Chi-Yu Liu, Suh-Yin Lee (2008), Content-Aware Fast Motion Estimation Algorithm, journal of Visual Communication & Image Representation.
[19] Ying-Li Tian and Arun Hampapur, Robust Salient Motion Detection with
Complex Background for Real-time Video Surveillance, IBM T.J. Watson Research Center
[20] Tilo Burghardt, Janko Ćalić, Barry T. Thomas, Tracking animals in wildlife videos using face detection, Dept. of Computer Science,University of Bristol
[21] Jian-Da Wu, Tuo-Rung Chen (2008), Development of a drowsiness warning system based on the fuzzy logic images analysis, Journal of ScienceDirect.
[22] Takao Hashimoto, Yuji Izawa, Hisashi Yokoyama, Takashi Kato, Tetsuji
Moriizumi (1999), A new video:computer method to measure the amount of overall movement in experimental animals (two-dimensional object-difference method).
PHỤ LỤC
Một code xử lý điển hình trong chương trình cài đặt: //cua so 5x5
DWORD x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16; DWORD x21,x22,x23,x24,x25,x26,x27,x28;
DWORD v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16; DWORD v21,v22,v23,v24,v25,v26,v27,v28;
//========QUET HET CAC FRAME================= for(int k=0;k<(TotalFrames-1);k++)
{
//con tro P1
if(k==0)//khoi dau khong can lay {
pDIB = pDoc->m_play->GetNextDirectFrameFromStream(); bChangeFrames=true;
}
//co su thay doi khung hinh if(bChangeFrames==true) {
////////
if (pDIB == NULL) return;
lpDATA = new BYTE[pDIB->biSizeImage]; if (!copy(lpDATA, pDIB)) return;
hDIB = GlobalAlloc(GMEM_MOVEABLE, (DWORD)sizeof(BITMAPINFOHEADER) + (DWORD)::PaletteSize((LPSTR)pDIB) + pDIB->biSizeImage); pbih = (LPBITMAPINFOHEADER)GlobalLock(hDIB); *pbih = *pDIB; lpbi = FindDIBBits((LPSTR)pbih);
for (DWORD i=0; i<pDIB->biSizeImage; i++) lpbi[i]= lpDATA[i];
lpDIBBytes = (BYTE *)lpbi; ///////de cho cau if o tren
}
ảnh trắng đen và tìm sai khác
///---ANH DEN TRANG---
lpDATAWB=new BYTE[pDIBWB->biSizeImage];//anh den trang
hDIBWB= GlobalAlloc(GMEM_MOVEABLE, (DWORD)sizeof(BITMAPINFOHEADER) +
(DWORD)::PaletteSize((LPSTR)pDIBWB) + pDIBWB->biSizeImage);
pbihWB=(LPBITMAPINFOHEADER)GlobalLock(hDIBWB); *pbihWB= *pDIBWB;
lpbiWB = FindDIBBits((LPSTR)pbihWB); for (i=0; i<pDIB_1->biSizeImage; i++)
lpbiWB[i]= lpDATAWB[i]; lpDIBBytesWB = (BYTE *)lpbiWB; bfrist=false;
//---ket thuc anh den trang--- }
height=pDIB->biHeight; width=pDIB->biWidth;
// DrawFrame(pbih_1); //hien thoi
// DrawFrame_Second(pbih_1); //khung hien thoi c=0;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
vt = i*width+j; //anh phia truoc mau =
(BYTE)(lpDIBBytes[vt*3]/3+lpDIBBytes[vt*3+1]/3+lpDIBBytes[vt*3+2]/3); I1+=mau;
//anh hien thoi
mau_1=(BYTE)(lpDIBBytes_1[vt*3]/3+lpDIBBytes_1[vt*3+1]/3+lpDIBBytes _1[vt*3+2]/3);
I2+=mau_1;
if(abs(mau-mau_1)<20) //giong nhau co'do sai khac' 20 {
// khi co' su sai khac' rat nho lpDIBBytes_1[vt*3] = 0; lpDIBBytes_1[vt*3+1] =0; lpDIBBytes_1[vt*3+2] =0; //anh den trang
lpDIBBytesWB[vt*3]=0; lpDIBBytesWB[vt*3+1]=0; lpDIBBytesWB[vt*3+2]=0; c++; } else { lpDIBBytes_1[vt*3] = 255; lpDIBBytes_1[vt*3+1] =255; lpDIBBytes_1[vt*3+2] =255; //anh den trang
lpDIBBytesWB[vt*3+1]=255; lpDIBBytesWB[vt*3+2]=255; }
} }
Khử nhiễu khi có sai khác nhiều với mặt nạ 5x5 for (i = 0; i < height; i++)
for (j = 0; j < width; j++) {
vt = i*width+j;//vi tri cua pixel hien thoi mau=(BYTE)(lpDIBBytes_1[vt*3]); ///3+lpDIBBytes_1[vt*3+1]/3+lpDIBBytes_1[vt*3+2]/3);
//mat na 5x5
if(mau==255)//neu la mau trang thi kiem tra vung lan can 5x5 { //x1 if(((i+2)<height)&&((j-2)>=0)) { x1=(i+2)*width+(j-2);
v1=lpDIBBytes_1[x1*3];//lay gia tri cua x1 } else { x1=-1; v1=0; } //x2 if(((i+1)<height)&&((j-2)>=0)) { x2=(i+1)*width+(j-2); v2=lpDIBBytes_1[x2*3]; } else { x2=-1; v2=0; } //x3 if((j-2)>=0) { x3=i*width+(j-2); v3=lpDIBBytes_1[x3*3]; } else { x3=-1; v3=0;
} //x4 if(((i-1)>-1)&&((j-2)>=0)) { x4=(i-1)*width+(j-2); v4=lpDIBBytes_1[x4*3]; } else { x4=-1; v4=0; } //x5 if(((i-2)>-1)&&((j-2)>=0)) { x5=(i-2)*width+(j-2); v5=lpDIBBytes_1[x5*3]; } else { x5=-1; v5=0; } //x6 if(((i-2)>-1)&&((j-1)>=0)) { x6=(i-2)*width+(j-1); v6=lpDIBBytes_1[x6*3]; } else { x6=0; v6=0; } //x7 if((i-2)>-1) { x7=(i-2)*width+j; v7=lpDIBBytes_1[x7*3]; } else { x7=-1; v7=0; } //x8 if(((i-2)>-1)&&((j+1)<width)) {
x8=(i-2)*width+(j+1); v8=lpDIBBytes_1[x8*3]; } else { x8=-1; v8=0; } //x9 if(((i-2)>-1)&&((j+2)<width)) { x9=(i-1)*width+(j+2); v9=lpDIBBytes_1[x9*3]; } else { x9=-1; v9=0; } //x10 if(((i-1)>-1)&&((j+2)<width)) { x10=(i-1)*width+(j+2); v10=lpDIBBytes_1[x10*3]; } else { x10=-1; v10=0; } //x11 if((j+2)<width) { x11=i*width+(j+2); v11=lpDIBBytes_1[x11*3]; } else { x11=-1; v11=0; } //x12 if(((i+1)<height)&&(j+2)<width) { x12=(i+1)*width+(j+2); v12=lpDIBBytes_1[x12*3]; } else
{ x12=-1; v12=0; } //x13 if(((i+2)<height)&&(j+2)<width) { x13=(i+2)*width+(j+2); v13=lpDIBBytes_1[x13*3]; } else { x13=-1; v13=0; } //x14 if(((i+2)<height)&&(j+1)<width) { x14=(i+2)*width+(j+1); v14=lpDIBBytes_1[x14*3]; } else { x14=-1; v14=0;