CHƯƠNG 2 ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Một phần của tài liệu ỨNG DỤNG CÔNG NGHỆ xử lý ẢNH vào điểm DANH và KIỂM TRA TIÊM VACXIN (Trang 31 - 44)

CỨU

2.1 Đối tượng nghiên cứu

Hình 2. 1 Ứng dụng PC-Covid

Hệ thống sử dụng ảnh thẻ thông tin covid trong ứng dụng PC-Covid làm dữ liệu đọc thông tin. Trong thẻ thông tin covid chứa mã QR code lưu trữ thông tin cá nhân của người dùng. Ở hình bên dưới, bên trái là thẻ covid xác nhận đã tiêm sẽ có màu xanh đậm còn bên phải là thẻ covid xác nhận chưa tiêm sẽ có màu xanh nhạt.

Vùng đỏ được xác định trong các thẻ là vùng quan tâm được xác định và xử lý để trích xuất ra thông tin.

Hình 2. 2 Ảnh thẻ thông tin covid trong ứng dụng PC-Covid

2.1.1 Phương pháp đọc mã QR

Việc sử dụng mã QR code vào điểm danh có nhiều lợi ích đáng kể cho người sử dụng như:

- Đảm bảo an toàn, vệ sinh: hoàn toàn có thể sử dụng từ xa, không tiếp xúc đảm bảo an toàn trước các bệnh truyền nhiễm, đặc biệt trong thời điểm dịch covid-19 hiện nay.

- Linh hoạt: mã QR có thể mã hóa bất cứ thứ gì từ thông tin cá nhân đến các hệ thống thanh toán phức tạp, có thể đặt ở bất cứ đâu và có thể quét trực tiếp bằng điện thoại.

- Gọn nhẹ, tiết kiệm: chỉ với một mã ô vuông kích thước nhỏ là có thể lưu trữ rất nhiều thông tin cần thiết.

- Nhanh: QR là viết tắt của phản hồi nhanh. Mã QR được cho là để tăng tốc quá trình quét mã vạch UPC. Người ta thực hiện thành công điều này bằng cách mã hóa thông tin theo hai hướng thay vì một hướng. Bằng cách

mã hóa thông tin theo chiều ngang và chiều dọc (đó là lý do tại sao chúng là hình vuông), chúng có thể phân phối thông tin đó từ hai hướng thay vì một. Điều đó giúp cho việc cung cấp thông tin nhanh hơn.

- Dễ sử dụng: Mã QR code không được quét bởi máy quét mã vạch bắn ra một đường ngang, giống như bạn thấy ở quầy thanh toán. Chúng được quét bằng máy quét quang học 2D. Máy ảnh thông thường là một loại máy quét quang học. Đó là lý do tại sao máy ảnh điện thoại thông minh của chúng ta có thể dễ dàng quét mã QR.

Với những ưu điểm vượt trội của mã QR code và thời điểm dịch bệnh như hiện này thì việc đọc mã QR tự động càng ngày càng cần thiết. Một trong những phương pháp đọc mã QR code là sử dụng thư viện Zxing.

Thư viện Zxing (viết tắt của “zebra crossing”) là một thư viện mã nguồn mở, xử lý nhiều định dạng mã vạch 1 chiều và 2 chiều, được cài đặt bằng Java. Mục đích của thư viện này là sử dụng máy ảnh trên điện thoại di động để chụp và giải mã các mã vạch trên thiết bị, không cần phải kết nối với máy chủ. Hiện tại thư viện hỗ trợ các định dạng mã vạch sau: - UPC-A và UPC-E - EAN-8 và EAN-13 - Code 39 - Code 128 - QR Code - Data Matrix - ITF

Thư viện này được chia làm nhiều phần, các phần sau vẫn đang được hỗ trợ và phát triển thường xuyên:

- core: là phần lõi thư viện giải mã và là phần chính của toàn bộ dự án. - javase: ứng dụng khách cho J2SE.

- android: ứng dụng khách cho Android.

- androidtest: chương trình demo trên Android.

- android-integration: thư viện hỗ trợ tích hợp Barcode Scanner (bộ quét mã vạch) thông qua Intent cho Android.

- zxing.appspot.com: mã nguồn của trang web tạo mã vạch

http://zxing.appspot.com/.

Hình 2. 3 Quét mã vạch với thư viện zxing

Các mô đun sau được đóng góp và phát triển không thường xuyên: - javame: ứng dụng khách cho JavaME.

- csharp: thư viện cho C#. - cpp: thư viện cho C++.

- rim: ứng dụng khách cho RIM/Blackberry.

- iphone: ứng dụng khách cho iPhone (chỉ hỗ trợ mã QR). - bug: ứng dụng khách cho BugLabs’s BUG.

- symbian: thư viện cho Symbian.

2.1.2 Phương pháp kiểm tra thông tin tiêm vacxin.

Trong đồ án này, ta sử dụng không gian màu HSV để xử lý cho ứng dụng đọc thông tin tiêm vắc-xin qua hiển thị màu.

Hình 2. 4 Ảnh không gian màu HSV

HSV hay còn gọi là không gian màu HSB là một không gian màu dựa trên 3 thông số chính của không gian màu:

- H viết tắt của HUE là vùng màu.

- S viết tắt của SATURATION có nghĩa là độ bão hòa màu.

- V viết tắt của VALUE có nghĩa là giá trị hay độ sáng của màu sắc.

Sau khi chuyển từ hệ màu RGB sang HSV thì bộ lọc giá trị màu bằng hàm cv2.inRange(), kết quả là ảnh nhị phân gọi là mask, sau đó ta áp dụng vào ảnh gốc ta sẽ được ảnh chỉ chứ màu giới hạn.

Để lọc khoảng màu ta dùng:

Bước 1: Chuyển ảnh sang không gian màu HSV ta sử dụng lệnh hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

Bước 2: Để lọc màu từ ảnh ta sử dụng lệnh: white_mask = cv2.inRange(hsv, lower, upper)

result = cv2.bitwise_and(frame, frame, mask = white_mask) cv2.imshow('inrange', result)

Trong đó lower và upper là các giá trị tìm được ở trên Xám hóa và nhị phân ảnh

Để xám hóa và nhị phân ảnh ta sử dụng các lệnh: gray = cv2.cvtColor(result, cv2.COLOR_BGR2GRAY) cv2.imshow('gray', gray)

ret, thresh = cv2.threshold(gray ,1 ,255, cv2.THRESH_BINARY) cv2.imshow('thresh', thresh)

Các phương pháp xử lý đối tượng trong ảnh *Chuyển qua ảnh xám:

Đơn vị cơ bản của một bức ảnh là điểm ảnh (pixel), mỗi điểm ảnh có thể được biểu diễn bằng n bytes dưới các hệ màu khác nhau. Việc chuyển đổi giữa các hệ màu thông thường được thực hiện thông qua các phép biến đổi ma trận. Xét đến phương thức chuyển đổi từ ảnh 24 bit RGB sang ảnh 8 bit đa mức xám, để thực hiện yêu cầu trên, thông thường ta sử dụng cách chuyển đổi từ ảnh 24 bit RGB sang ảnh 8bit GrayScale.

GrayScale là một hệ thống màu có mô hình màu đơn giản nhất với 256 cấp độ xám biến thiên từ màu đen đến màu trắng. Sản phẩm được xuất ra sẽ có màu trắng đen. Được sử dụng cả trong công nghiệp in lẫn dùng trong việc thể hiện ảnh lên các thiết bị số.

Ảnh xám (Gray image) hay còn gọi là ảnh đơn sắc (Monochromatic), mỗi giá trị điểm ảnh (Pixel) trong ma trận điểm ảnh mang giá trị từ 0 đến 255.

Trong không gian màu RGB, để có một ảnh xám cần có phải có giá trị kênh màu Red(x, y) = Green(x, y) = Blue(x, y). (Với x, y lần lượt là tọa độ của điểm ảnh).

Công thức tính cường độ sáng tại một điểm ảnh từ ảnh RGB:

I(x, y) = 0.3086 * Red(x, y) + 0.6094 * Green(x, y) + 0.0820 * Blue(x, y) Ix,y=0.299*Red(x,y)+0.587*Green(x,y)+0.114*Blue(x,y)

Phân tích:

- I (x, y): Là cường độ sáng tại điểm ảnh (x, y) của ảnh xám.

- Red (x, y): Là giá trị của kênh màu Red (Đỏ) tại điểm ảnh (x, y) của ảnh màu (RGB).

- Green (x, y): Là giá trị của kênh màu Green (Xanh lá cây) tại điểm ảnh (x, y) của ảnh màu (RGB). Blue(x, y): Là giá trị của kênh màu.

- Blue (Xanh lơ) tại điểm ảnh (x, y) của ảnh màu (RGB).

Theo [20] ta có công thức khác tính cường độ sáng tại một điểm ảnh từ ảnh RGB:

I(x, y) = (2 * Red(x, y) + 5 * Green(x, y) + 1 * Blue(x, y)) / 8 Chú ý:

Các phép toán trong số nguyên (Int) nhanh hơn rất nhiều trong số thực (Float).

Trong OpenCV[20], hệ thống màu có thứ tự các kênh màu là Blue-Green- Red. Các thông số dùng để tính toán cường độ sáng cho ảnh xám như: 0.3086, 0.6094, 0.0820… Được coi là những con số đẹp do người ta nghiên cứu ra. Các con số này có thể thay đổi. Chúng ta hoàn toàn có thể chọn một giá trị một kênh màu hoặc chia trung bình cộng của 3 kênh màu để tìm cường độ sáng tại một điểm ảnh (Pixel).

Lưu ý rằng giá trị mỗi điểm ảnh I(x, y) hay còn gọi là cường độ sáng (Luminance Intensity) trong ảnh đa mức xám tính được là tổng trọng số khác nhau của mỗi thành phần màu trong hệ màu RGB. Một trong những lý do của việc này là nếu chúng ta sử dụng cùng trọng số, ví dụ (R + G + B) / 3 thì màu đỏ, màu xanh nước biển hay màu xanh da trời sẽ có cùng mức xám sau khi chuyển đổi. Mặt khác khoa học đã chứng minh thì mắt người nhạy cảm hơn với thành phần màu xanh lá cây và màu đỏ so với xanh da trời.

*Phân ngưỡng (Threshold).

Khi xử lý trực tiếp ảnh từ không gian màu (RGB, HIS…) hoặc ảnh xám (gray) đôi khi chúng ta phải tiếp nhận một số lượng lớn thông tin từ ảnh. Điều này có thể gây khó khăn cho việc xây dựng thuật toán và làm giảm tốc đọ xử lý. Vì thế có lớp thuật toán phân ngưỡng để chuyển ảnh đầu vào (ảnh màu hoặc ảnh xám) về không gian ảnh nhị phân: chỉ gồm hai giá trị 0 hoặc 1, hoặc 0 và 255 tùy theo quy định của cấu trúc ảnh. Theo đó, giá trị 0 sẽ là giá trị ứng với những điểm đen trên ảnh và giá trị 1 (hoặc 255) sẽ là giá trị ứng với những điểm trắng. Nhằm làm đơn giản hóa quá trình tính xử lý.

Phân ngưỡng với ngưỡng cố định[17]: nếu pixel có giá trị lớn hơn giá trị ngưỡng thì nó được gán 1 giá trị (thường là 1), ngược lại nhỏ hơn giá trị ngưỡng thì nó được gán 1 giá trị khác (thường là 0).

Hàm sử dụng là threshold, tham số đầu tiên là 1 ảnh xám, tham số thứ 2 là giá trị ngưỡng, tham số thứ 3 maxval là giá trị được gán nếu giá pixel lớn hơn giá trị ngưỡng, tham số thứ 4 là loại phân ngưỡng. Tùy theo các loại phân ngưỡng mà pixel được gán giá trị khác nhau:

- Nếu giá trị pixel lớn hơn ngưỡng thì gán bằng maxval, ngược lại bằng gán bằng 0.

THRESH_BINARY_INV

- Nếu giá trị pixel lớn hơn ngưỡng thì gán bằng 0, ngược lại bằng gán bằng maxval.

THRESH_TRUNC

- Nếu giá trị pixel lớn hơn ngưỡng thì gán giá trị bằng ngưỡng, ngược lại giữ nguyên giá trị.

THRESH_TOZERO

- Nếu giá trị pixel lớn hơn ngưỡng thì giữ nguyên giá trị, ngược lại gán bằng 0.

THRESH_TOZERO_INV

- Nếu giá trị pixel lớn hơn ngưỡng thì gán giá trị bằng 0, ngược lại giữ nguyên.

Ưu điểm của thuật toán đơn giản dễ lập trình. Nhược điểm là khó chọn ngưỡng thích nghi với nhiều loại ảnh trong các điều kiện ánh sáng khác nhau.

Adaptive Thresholding (phân ngưỡng thích nghi): phương pháp phân ngưỡng ở trên không phù hợp cho nhiều trường hợp, như là ánh sáng không đồng đều trên ảnh. Trong trường hợp đó chúng ta dùng hàm adaptive Threshold. Phương thức này tính giá trị trung bình của các n điểm xung quanh pixel đó rồi trừ cho C chứ không lấy ngưỡng cố định (n thường là số lẻ, còn C là số nguyên bất kỳ).

Ngoài các tham số giống như phân ngưỡng thường, adaptiveThreshold có thêm các tham số:

ADAPTIVE_THRESH_MEAN_C: giá trị của pixel phụ thuộc vào các pixel lân cận.

ADAPTIVE_THRESH_GAUSSIAN_C: giá trị của pixel cũng phụ thuộc vào các pixel lân cận, tuy nhiên được khử nhiễu.

Block Size: số pixel lân cận dùng để tính toán. C: hằng số trừ đi giá trị trung bình.

2.1.3 Giới thiệu về thư viện OpenCV

OpenCV là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính (computer vision), xử lý ảnh và máy học (Machine Learning), và các tính năng tăng tốc GPU trong thời gian hoạt động thực.

Hình 3. 1 Thư viện Open CV

OpenCV được phát hành theo giấy phép BSD, do đó nó hoàn toàn miễn phí cho cả học thuật và thương mại. Nó có các interface C++, C, Python, Java và hỗ trợ trên các hệ điều hành như Windows, Linux, Mac OS, IOS và Android. OpenCv được thiết kế để tính toán hiệu quả và với sự tập trung nhiều vào các ứng dụng thời gian thực. Được viết tối ưu hóa C/C++, thư viện có thể tận dụng lợi thế xử lý đa lõi. Được sử dụng trên khắp thế giới, OpenCV có cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệu lần. Phạm vi sử dụng từ nghệ thuật tương tác, cho đến lĩnh vực khai thác mỏ, bản đồ trên web hoặc công nghệ robot.

OpenCV được ứng dụng rộng rãi trong các ứng dụng bao gồm:

- Hình ảnh street view.

- Kiểm tra và giám sát tự động.

- Robot và xe hơi tự lái.

- Phân tích hình ảnh y tế.

- Tìm kiếm và phục hồi hình ảnh, video.

- Phim - cấu trúc 3D chuyển động.

Chức năng của OpenCV:

- Image/video I/O, xử lý, hiển thị (core, imgproc, highgui).

- Geometry-based monocular or stereo computer vision (calib3d, stitching, videostab).

- Computational photography (photo, video, superres).

- Machine learning & clustering (ml, flann).

- CUDA acceleration (GPU). 2.1.4 Ngôn ngữ lập trình

C# (hay C sharp) là một ngôn ngữ lập trình đơn giản, được phát triển bởi đội ngũ kỹ sư của Microsoft vào năm 2000. C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java.

Hình 3. 2 Ngôn ngữ lập trình C#

C# với sự hỗ trợ mạnh mẽ của .NET Framework giúp cho việc tạo một ứng dụng Windows Forms hay WPF (Windows Presentation Foundation), phát triển game, ứng dụng Web, ứng dụng Mobile trở nên rất dễ dàng.

Mono là phiên bản cộng đồng nhằm mang .NET đến những nền tảng ngoài Windows. Mono được phát triển chủ yếu nhằm xây dựng những ứng dụng với giao diện người dùng và được sử dụng rất rộng rãi: Unity Game, Xamarin…

Cho đến năm 2013, Microsoft định hướng đi đa nền tảng và phát triển .NET core. .NET core hiện được sử dụng trong các ứng dụng Universal Windows platform và ASP.NET Core. Từ đây, C# có thể được sử dụng để phát triển các loại

ứng dụng đa nền tảng trên các hệ điều hành khác nhau (Windows, Linux, MacOS, …).

C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java và C++, bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp cơ sở ảo (virtual base class). Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng C và C++. Nếu chúng ta thân thiện với C và C++ hoặc thậm chí là Java, chúng ta sẽ thấy C# khá giống về diện mạo, cú pháp, biểu thức, toán tử và những chức năng khác được lấy trực tiếp từ ngôn ngữ C và C++, nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn. Điều gì làm cho một ngôn ngữ hiện đại? Những đặc tính như là xử lý ngoại lệ, thu gom bộ nhớ tự động, những kiểu, dữ liệu mở rộng và bảo mật mã nguồn là những đặc tính được mong đợi trong ngôn ngữ C#.

- Nền tảng .NET:

NET Framework được Microsoft đưa ra chính thức từ năm 2002. .NET Framework chỉ hoạt động trên Windows. Những nền tảng ứng dụng như WPF, Winforms, ASP.NET (1-4) hoạt động dựa trên .NET Framework.Để xử lý bài toán nhận dạng kích thước bắp cải sử dụng thư viện OpenCV, chúng ta có thể sử dụng các ngôn ngữ lập trình như: .NET C#, VB, IronPython, Java, C++, …

NET Framework được Microsoft đưa ra chính thức từ năm 2002. .NET Framework chỉ hoạt động trên Windows. Những nền tảng ứng dụng như WPF, Winforms, ASP.NET (1-4) hoạt động dựa trên .NET Framework.Để xử lý bài toán nhận dạng kích thước bắp cải sử dụng thư viện OpenCV, chúng ta có thể sử dụng các ngôn ngữ lập trình như: .NET C#, VB, IronPython, Java, C++…

Trong đồ án này ngôn ngữ lập trình được sử dụng là .NET C#, viết trên phần mềm Visual Studio.

2.2 Phương pháp nghiên cứu. 2.2.1 Phương pháp kế thừa.

Là các phương pháp tác động trực tiếp vào đối tượng có trong thực tiễn để làm rõ bản chất và các quy luật của đối tượng.

+ Phương pháp quan sát khoa học: Có hai loại quan sát khoa học là quan sát trực tiếp và quan sát gián tiếp hoặc phân thành quan sát theo thời gian và không gian. Đối với những nghiên cứu quy mô lớn nên chia thời gian nghiên cứu theo từng giai đoạn để thu thập được nguồn thông tin chính xác nhất, xác thực nhất với vấn đề nghiên cứu.

Ý nghĩa của phương pháp là: Quan sát là phương thức cơ bản để nhận thức sự vật. Quan sát sử dụng một trong hai trường hợp: phát hiện vấn đề nghiên cứu, đặt giả thuyết kiểm chứng giả thuyết. Quan sát đem lại cho người nghiên cứu những tài liệu cụ thể, cảm tính trực quan, song có ý nghĩa khoa học rất lớn, đem lại cho khoa học những giá trị thực sự.

+ Phương pháp thực nghiệm khoa học:

Thực nghiệm là phương pháp thu nhập thông tin về đối tượng được thực hiện bởi những quan sát trực tiếp trong điều kiện gây biến đổi cho đối tượng khảo sát một cách có chủ đích. Thực chất của phương pháp thực nghiệm là chủ động gây ra

Một phần của tài liệu ỨNG DỤNG CÔNG NGHỆ xử lý ẢNH vào điểm DANH và KIỂM TRA TIÊM VACXIN (Trang 31 - 44)

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

(74 trang)
w