lOMoARcPSD| 58933639
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BÁO CÁO
Môn: Xử Lí Ảnh
ĐỀ TÀI: HỆ THỐNG ĐO CHIỀU CAO TỰ ĐỘNG CHO
NGƯỜI SỬ DỤNG CAMERA
GVHD: TS. Dương Minh Thiện
SVTH: Thạch Lâm Huy – 22151094
Thế Khôi – 22151106
TP. Hồ Chí Minh, tháng 06 năm 2025
lOMoARcPSD| 58933639
Nhóm sinh viên thực hiện.
STT
HỌ VÀ TÊN
MSSV
CÔNG VIỆC THỰC HIỆN
KẾT QUẢ
1
Lê Thế Khôi
22151106
Xử lí ảnh, file word, ppt
100%
2
Thạch Lâm Huy
22151094
Xử lí ảnh , file word, ppt
100%
NHẬN XÉT CỦA GIẢNG VIÊN
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
......................................................................................................................................
.
......................................................................................................................................
.
.......................................................................................................................................
.......................................................................................................................................
Điểm ...........................................................................................................................
Kí tên
lOMoARcPSD| 58933639
LỜI CẢM ƠN
Trong khoảng thời gian được học tập và rèn luyện dưới mái trường Đại học Sư phạm
Kỹ thuật Tp. Hồ Chí Minh đã cho chúng em hội tiếp thu những kiến thức không chỉ
trong sách vở mà còn những câu chuyện thực tế, những dụ minh họa sinh động được
các Thầy, truyền đạt vào những buổi học thuyết thực hành, tất cả sẽ là hành trang
tri thức quý báu, là nền tảng vững vàng nâng bước chúng em trên con đường sự nghiệp phía
trước.
Nhóm em xin được gửi lời cảm ơn chân thành đến thầy Dương Minh Thiện đã tận tình
chỉ bảo, hướng dẫn đóng góp những ý kiến cùng quý giá giúp nhóm em hoàn thành
báo cáo cuối kì cho môn học xử lí ảnh. Nhóm cũng xin cám ơn quý Thầy, Cô đang công tác
tại khoa Điện - Điện tử cùng các Thầy, trong toàn trường đã giảng dạy nhiệt tình truyền
tải các kinh nghiệm quý giá cho nhóm trong suốt thời gian học vừa qua.
Tuy đã sự chuẩn bị trong bài báo cáo cuối môn học này song không thể tránh
khỏi những sai sót. Vì vậy, nhóm em rất mong nhận được sự chỉ bảo, đóng góp ý kiến của
Thầy để nhóm có cơ hội nâng cao kiến thức và kĩ năng của mình, cũng như là một nền tảng
vững chắc để nhóm tiến xa hơn trong tương lai.
Nhóm em xin chân thành cảm ơn !
lOMoARcPSD| 58933639
MỤC LỤC
LỜI CẢM ƠN ...................................................................................................................... 1
MỤC LỤC ............................................................................................................................ 2
DANH MỤC HÌNH ẢNH ................................................................................................... 2
Chương 1. TỔNG QUAN .................................................................................................... 3
1.1. Đặt vấn đề .............................................................................................................. 3
1.2. Mục tiêu đề tài ....................................................................................................... 3
1.3. Nội dung ................................................................................................................. 3
Chương 2. CƠ SỞ LÝ THUYẾT........................................................................................ 4
2.1. Giới thiệu về xử lí ảnh ........................................................................................... 4
2.2. Thuật toán xử lí ..................................................................................................... 4
2.2.1. Giới thiệu về mô hình YOLO ............................................................................ 4
2.3. Thư viện OpenCV ................................................................................................. 7
2.4. Thư viện PyTorch .................................................................................................. 7
Chương 3. XÂY DỰNG HỆ THỐNG ................................................................................ 9
3.1. Lưu đồ giải thuật ................................................................................................... 9
3.2. Quy trình hoạt động .............................................................................................. 9
Chương 4. KẾT QUẢ ........................................................................................................ 14
Hình ảnh kết quả đạt được: ...................................................................................... 14
Chương 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ..................................................... 16
5.1. Đánh giá ............................................................................................................... 16
5.2. Kết luận ................................................................................................................ 16
5.3. Hướng phát triển ................................................................................................. 16
TÀI LIỆU THAM KHẢO ................................................................................................. 17
DANH MỤC HÌNH ẢNH
Hình 1. Các bước cơ bản trong quá trình xử lí ảnh..........................................................5
Hình 2. Hình ảnh minh hoạ.................................................................................................6
Hình 4. Thư viện OpenCV...................................................................................................8
Hình 5. Thư viện PyTorch...................................................................................................9
Hình 6. Lưu đồ giải thuật của hệ thống...........................................................................10
Hình 7. Hình ảnh đo thực tế..............................................................................................14
Hình 8. Hình ảnh kết quả đạt được..................................................................................14
lOMoARcPSD| 58933639
Chương 1. TỔNG QUAN
1.1. Đặt vấn đề
Trong bối cảnh xã hội ngày càng phát triển theo hướng công nghiệp hóa, hiện đại hóa,
việc ứng dụng khoa học kỹ thuật vào đời sống con người trở nên ngày càng phổ biến đóng
vai trò quan trọng trong việc nâng cao chất lượng sống. Đặc biệt, công nghệ xử lý ảnh và trí
tuệ nhân tạo đang dần khẳng định vị thế trong nhiều lĩnh vực như y tế, nông nghiệp, sản
xuất, và đời sống thường nhật.
Trong số đó, nhu cầu đo chiều cao cơ thể người là một yêu cầu phổ biến trong y tế, thể
thao, giáo dục, cũng như trong các ứng dụng quản thông tin cá nhân. Tuy nhiên, phương
pháp đo truyền thống bằng thước cơ học thường mất thời gian, yêu cầu sự hỗ trợ của người
khác, và không phù hợp với môi trường tự động hóa.
Vì vậy, việc xây dựng một hệ thống đo chiều cao tự động sử dụng camerarất cần
thiết. Hệ thống này thể ứng dụng công nghệ xử ảnh để nhận dạng phân tích hình
ảnh cơ thể người, từ đó tính toán chiều cao một cách nhanh chóng, chính xác mà không cần
tiếp xúc vật lý. Đây không chỉ là một giải pháp tiện lợi và hiện đại, mà còn góp phần vào xu
hướng phát triển các hệ thống thông minh, tự động hóa trong đời sống.
Từ những lý do trên, nhóm em thực hiện đề tài “Hệ thống đo chiều cao tự động cho
người sử dụng camera” với mong muốn kết hợp giữa lý thuyết và thực tiễn, áp dụng những
gì đã học để giải quyết bài toán đời sống một cách hiệu quả và sáng tạo.
1.2. Mục tiêu đề tài
Đề tài nghiên cứu được lên ý tưởng và thực hiện hướng đến những mục tiêu:
- Xây dựng một hệ thống phát hiện và đo chiều cao con người theo thời gian thực, sử
dụng camera điện thoại kết nối qua mạng nội bộ (IP Webcam).
- ng dụng các kỹ thuật xử lý ảnh để phát hiện và tính toán chiều cao một cách chính
xác.
- Giao diện đơn giản, dễ sử dụng, thể triển khai trên các thiết bị, khả năng áp
dụng thực tế.
1.3. Nội dung
Chương 1: Tổng quan
Chương 2: Cơ sở lý thuyết
Chương 3: Xây dựng chương trình
Chương 4: Kết quả
Chương 5: Kết luận và hướng phát triển
lOMoARcPSD| 58933639
Chương 2. CƠ SỞ LÝ THUYẾT
2.1. Giới thiệu về xử lí ảnh
Xử ảnh (Image Processing), quá trình sử dụng máy tính để thực hiện các thao
tác phân tích, biến đổi hoặc nâng cao hình ảnh thông qua các thuật toán chuyên biệt. Đây là
một lĩnh vực đa ngành, kết hợp giữa khoa học máy tính, toán học ứng dụngkỹ thuật điện
điện tử, nhằm giúp trích xuất thông tin hữu ích từ hình ảnh, cải thiện chất lượng thị giác
hoặc phục vụ các mục đích đặc thù.
Khác với xử lý ảnh tương tự (analog), xử lý ảnh số có nhiều lợi thế vượt trội như:
tính tự động hóa cao, dễ tích hợp vào hệ thống thông minh; linh hoạt trong việc xử và điều
chỉnh tham số; khả năng thực hiện các phép biến đổi phức tạp một cách chính xác ổn
định. Nhờ vào các ưu điểm này, xử ảnh kỹ thuật số ngày nay đã được ứng dụng rộng rãi
trong nhiều lĩnh vực thực tiễn, chẳng hạn như: Y tế (phân tích ảnh chụp X-quang, MRI, CT
để hỗ trợ chẩn đoán bệnh,..), An ninh (nhận diện khuôn mặt, giám sát tự động qua camera,..),
Viễn thám (xử lý ảnh vệ tinh phục vụ đo đạc địa hình, theo dõi môi trường,..), Công nghiệp
(kiểm tra bề mặt sản phẩm, phát hiện lỗi trong dây chuyền sản xuất,..) nhiều nh vực khác
nửa.
Quá trình xử lý ảnh kỹ thuật số thường trải qua các bước cơ bản sau:
- Thu nhận ảnh: sử dụng cảm biến, camera, hoặc thiết bị quét.
- Tiền xử ảnh: cải thiện chất lượng ban đầu như khử nhiễu, tăng độ sắc nét hoặc
tương phản.
- Phân đoạn ảnh: chia ảnh thành các vùng có đặc điểm riêng biệt, thường là vật thể và
nền.
- Trích xuất đặc trưng: xác định các đặc điểm quan trọng như cạnh, hình dạng, màu
sắc,...
- Nhận dạng phân tích: áp dụng các thuật toán để phân loại, đo đạc, hoặc ra quyết
định dựa trên hình ảnh.
Hình 1. Các bước cơ bản trong quá trình xử lí ảnh
2.2. Thuật toán xử lí
2.2.1. Giới thiệu về mô hình YOLO
YOLO (You Only Look Once) một trong những hình nổi tiếng nhất trong Object
Detection (phát hiện đối tượng) với khả năng xử nhanh độ chính xác cao, một
lOMoARcPSD| 58933639
hình CNN để detect object một ưu điểm nổi trội nhanh hơn nhiều so với những
hình cũ. Khác với các phương pháp truyền thống tách riêng bước tạo vùng đề xuất (region
proposals) bước phân loại đối tượng, YOLO xử tất cả trong một lần, tức "nhìn một
lần" và dự đoán cả Bounding box (hộp chứa đối tượng) và Class (loại đối tượng).
YOLO được ứng dụng rộng rãi trong nhiều lĩnh vực: giám sát an ninh (nhận diện
người, xe, hành vi đáng ngờ); Xe tự lái (Phát hiện người đi bộ, biển báo, phương tiện); Y tế
(Phát hiện khối u, tế bào trong ảnh y học); Nông nghiệp (Đếm số cây, theo dõi sâu bệnh);...
Hình 2. Hình ảnh minh hoạ
Cách hoạt động của YOLO
YOLO chia ảnh đầu vào thành một lưới gồm nhiều ô, mỗi ô có trách nhiệm dự đoán:
- Một hoặc nhiều bounding box
- Xác suất tồn tại đối tượng trong ô đó
- Class probabilities (khả năng thuộc các lớp như người, xe,
chó...) Cụ thể, mỗi bounding box chứa:
- (x, y): tọa độ tâm của box
- (w, h): chiều rộng và chiều cao (tương đối với toàn ảnh)
- Confidence score: độ tin cậy có đối tượng ở box đó
- Class probabilities: xác suất đối tượng thuộc các lớp khác
nhau
Về cơ bản, YOLO chia ảnh đầu vào thành các ô nhỏ, mô hình sẽ dự đoán xác xuất đối
tượng trong các đường bao (bounding-box) xung quanh mỗi ô nhỏ này. Những đường bao
có xác xuất cao sẽ được giữ lại và sử dụng cho nhiệm vụ xác định vị trí của đối tượng trong
ảnh.
YOLO nhiều phiên bản, trong đề tài Hệ thống đo chiều cao cho người sử dụng
camer này nhóm sử dụng phiên bản YOLOv5 do Ultralytics phát triển từ năm 2020 là bản
cập nhật mới nhất, kế thừa cải tiến so với các đời YOLO trước. Với các ứng dụng như
trong: giám sát an ninh, nhận dạng khuôn mặt, đếm phân loại phương tiện, chẩn đoán hình
ảnh y tế,...
lOMoARcPSD| 58933639
Phát hiện đối tượng (Object Detection):là quá trình xác định vị trí và phân loại các vật
thể xuất hiện trong một bức ảnh hoặc video. Mỗi dự đoán bao gồm ba thành phần chính:
khung giới hạn (bounding box) là hình chữ nhật bao quanh đối tượng, nhãn phân loại (class
label) thể hiện loại đối tượng như người, xe hơi, chó…, và độ tin cậy (confidence score) cho
biết mức độ chắc chắn của hình đối với dự đoán đó. Kỹ thuật này phù hợp với các ứng
dụng mục tiêu là nhận diện “có gì” “ở đâu” trong ảnh, không cần chi tiết chính
xác về hình dáng hoặc góc nhìn của vật thể.
Ưu điểm chính của YOLOv5 là:
- Tăng tốc độ: Nhanh hơn và hiệu quả hơn trong việc phát hiện đối tượng so với các
phiên bản trước.
- Độ chính xác: Cải thiện đáng kể về mAP (mean Average Precision) so với YOLOv4
và các bản tiền nhiệm.
- Phân loại đa lớp: thể nhận diện và phân loại đồng thời nhiều đối tượng khác nhau
trong cùng một khung hình.
- Độ linh hoạt: Triển khai đơn giản trên đa nền tảng (Windows, Linux, macOS)
nhiều loại thiết bị (GPU, CPU, NPU).
- Giao diện sử dụng đơn giản: Cung cấp bộ script đồng nhất, dễ cài đặt chạy, phù
hợp với cả người mới bắt đầu.
Quy trình xử lý ảnh trong YOLOv5:
- Bước tiền xử lý: Ảnh đầu vào được đọc, áp dụng Letterbox để giữ tỷ lệ, sau đó resize
về kích thước chuẩn và chuẩn hóa pixel.
- Bước trích xuất đặc trưng: Mạng backbone CSP-Darknet tạo ra các bản đồ đặc trưng
ở nhiều cấp độ.
- Bước kết hợp đặc trưng: PANet kết hợp các đặc trưng từ nhiều tầng nhằm tăng khả
năng phát hiện đối tượng, đặc biệt là các vật thể nhỏ.
- Bước dự đoán: Phần Head thực hiện dự đoán bounding box, nhãn lớp độ tin cậy
cho mỗi vùng trên ảnh.
- Bước hậu xử lý: Áp dụng Non-Maximum Suppression để loại bỏ các dự đoán trùng
lặp, chỉ giữ lại kết quả chính xác nhất.
YOLOv5 hình one-stage dự đoán bounding box và nhãn lớp chỉ trong một bước.
Ưu điểm là nhanh cân bằng tốt giữa tốc độ và độ chính xác, phù hợp với các ứng dụng thời
gian thực.
Yolov5 có 5 cấu trúc mạng chính:
Model
Version
T4
COCO mAP 50-95
YOLOv5
N
28
YOLOv5
S
37.4
lOMoARcPSD| 58933639
YOLOv5
M
45.4
YOLOv5
L
49
YOLOv5
X
50.7
Bảng 1. Version của Yolov5
Lý do nhóm lựa chọn verson Yolov5m là:
- Chạy nhanh (Latency thấp)
- Tốn ít tài nguyên (Ram/GPU)
- Phù hợp với thời gian thực (do kết nối với IP Webcam)
2.3. Thư viện OpenCV
Hình 3. Thư viện OpenCV
OpenCV (Open Source Computer Vision Library) là một thư viện mã nguồn mở được
phát triển dành riêng cho các ứng dụng xử ảnh thị giác máy tính. Thư viện này cung
cấp một tập hợp đa dạng các công cụ thuật toán phục vụ cho việc phân tích ảnh, xử
video từ nhận dạng vật thể, khuôn mặt cho đến theo dõi chuyển động trong khung hình.
OpenCV nổi bật nhờ khnăng phân tích hình ảnh mạnh mẽ, được ứng dụng rộng rãi
trong các lĩnh vực như robot, thị giác máy tính và phương tiện tự hành. Thư viện hỗ trợ đa
nền tảng đa ngôn ngữ, bao gồm C++, Python, Java MATLAB, giúp lập trình viên dễ
dàng tích hợp vào các dự án với môi trường phát triển phù hợp.
Các tính năng chính của OpenCV bao gồm: xử lý ảnh cơ bản, phát hiện cạnh đường
viền, thực hiện các phép biến đổi hình học như xoay, thay đổi kích thước ảnh. Thư viện còn
cho phép truy xuất video và tương tác với camera trong thời gian thực. Ngoài ra, còn hỗ
trợ các chức năng như nhận diện khuôn mặt, chuyển đổi không gian màu, phân tích màu sắc,
phát hiện theo dõi điểm đặc trưng, xử ảnh nâng cao bằng histogram hoặc các bộ lọc
hình thái học. Một điểm mạnh nữa của OpenCV là khả năng tích hợp với c hình học
sâu và học máy, giúp mở rộng ứng dụng trong các hệ thống thông minh. Thư viện hoạt động
ổn định trên nhiều hệ điều hành như Windows, Linux, macOS, cũng như các nền tảng di
động như Android và iOS.
2.4. Thư viện PyTorch
PyTorch một thư viện nguồn mở dành cho học máy, được phát triển trên nền
tảng Python. Thư viện này được sử dụng rộng rãi trong việc xây dựng và triển khai các mô
lOMoARcPSD| 58933639
hình học sâu, đặc biệt trong các lĩnh vực như nhận diện hình ảnh và xử lý ngôn ngữ tự nhiên.
Nhờ cấu trúc linh hoạt, dễ sử dụng khả năng tương tác cao, PyTorch cho phép các nhà
nghiên cứu kỹ nhanh chóng thử nghiệm, thiết kế triển khai các nh phức tạp.
Thư viện được phát triển bởi nhóm Facebook AI Research (FAIR) đã nhanh chóng trở
thành một trong những công cụ quan trọng trong cộng đồng trí tuệ nhân tạo.
Hình 4. Thư viện PyTorch
Các tính năng chính của PyTorch như: biểu đồ tính toán động (Dynamic
Computational Graph), tự động tính đạo hàm (Autograd), thư viện mạng -ron mạnh mẽ
(torch.n), hỗ trợ GPU CUDA, Tensor linh hoạt, tương thích NumPy; Thư viện mở rộng:
torchvision, torchaudio, torchtext, Hỗ trợ triển khai: TorchScript, ONNX, Huấn luyện phân
tán (Distributed Training), Tích hợp công cụ trực quan hóa, Thân thiện với nghiên cứu
phát triển.
Một trong những đặc điểm nổi bật của PyTorch khả năng hỗ trợ biểu đồ tính toán
động (Dynamic Computational Graph), cho phép người dùng thay đổi cấu trúc mạng nơron
ngay trong quá trình thực thi. Điều này mang lại sự linh hoạt hơn hẳn so với các framework
sử dụng đồ thị tĩnh như TensorFlow (trong các phiên bản cũ). Thông qua việc tích hợp các
tính năng mạnh mẽ, ưu việt này, PyTorch đã trở thành một công cụ hỗ trợ hiệu quả, giúp
người dùng xây dựng và áp dụng thành công các hình học máy, học sâu vào nhiều nh
vực ứng dụng khác nhau, từ nghiên cứu khoa học nền tảng đến các giải pháp công nghiệp
thực tế.
lOMoARcPSD| 58933639
Chương 3. XÂY DỰNG HỆ THỐNG
3.1. Lưu đồ giải thuật
Hình 5. Lưu đồ giải thuật của hệ thống
3.2. Quy trình hoạt động
Bước 1: Hệ thống bắt đầu kết nối tới camera điện thoại Android thông qua địa chỉ IP
Webcam. Sau đó, hệ thống xoay khung hình cho đúng hướng hiển thị và áp dụng hiệu chỉnh
méo ảnh bằng các thông số nội tại từ tập tin hiệu chỉnh camera. Quá trình này giúp đảm bảo
chất lượng ảnh đầu vào ổn định và chính xác trước khi đưa vào phân tích.
Bước 2: Sau đó hệ thống sử dụng hình học sâu YOLOv5m để phát hiện các đối
tượng trong ảnh. Trong mỗi khung hình, YOLOv5 xác định trả về thông tin bao gồm
bounding box, label "person" (người) "bottle" (chai nước), cùng với độ tin cậy. Hệ
thống ưu tiên xử khi phát hiện được cả người và chai nước, chai nước được dùng làm
đối tượng tham chiếu chiều cao.
Bước 3: Khi trong khung hình có cả người và chai nước hệ thống tính chiều cao người
dựa trên tỉ lệ chiều cao pixel giữa hai đối tượng, chiều cao thật của chai nước đã biết trước
(21 cm) như sử dụng công thức:
chiềucaongười (cm)=chiềucaongười
(pixel)
×21(cm) (1)
chiềucaochai(pixel)
lOMoARcPSD| 58933639
Để giảm nhiễu do thay đổi nhỏ giữa các khung hình, hệ thống sử dụng một bộ đệm
trượt để làm mượt giá trị chiều cao, chỉ cập nhật khi sự thay đổi vượt quá một ngưỡng nhất
định.
Bước 4: Sau khi tính toán chiều cao, hệ thống sẽ hiển thị bounding box xung quanh
người chai nước, ghi nhãn chiều cao ước tính ngay trên khung hình, hiển thị ảnh đầu ra
theo thời gian thực để người dùng dễ quan sát. Cứ 10 giây, nếu có đầy đủ dữ liệu phát hiện,
hệ thống tự động lưu lại khung hình chứa kết quả đo chiều cao vào thư mục.
3.3. Chương trình Python
import cv2 import
numpy as np
import torch import
os import time
from collections import deque
data = np.load("camera_calib_data.npz")
cameraMatrix = data['cameraMatrix']
distCoeffs = data['distCoeffs']
model = torch.hub.load('ultralytics/yolov5', 'yolov5m')
# Kết nối webcam từ Android url =
"http://192.168.1.71:8080/video" cap
= cv2.VideoCapture(url)
bottle_height_cm = 21
height_buffer = deque(maxlen=5)
smoothed_height = 0
min_delta = 1.0 # Ngưỡng thay đổi
last_saved_time = 0
lOMoARcPSD| 58933639
interval = 10
while True: ret, frame
= cap.read() if not ret:
break
frame = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE)
h, w = frame.shape[:2]
new_mtx, _ = cv2.getOptimalNewCameraMatrix(cameraMatrix, distCoeffs, (w, h), 1,
(w, h))
frame_undistort = cv2.undistort(frame, cameraMatrix, distCoeffs, None, new_mtx)
results =
model(frame_undistort)
person_box = None bottle_box
= None
for det in results.xyxy[0]:
x1, y1, x2, y2, conf, cls =
det cls = int(cls) if cls
== 0: # person
person_box = (int(x1), int(y1), int(x2), int(y2))
elif cls == 39: # bottle
bottle_box = (int(x1), int(y1), int(x2), int(y2))
if person_box and bottle_box:
_, y1_person, _, y2_person = person_box
_, y1_bottle, _, y2_bottle = bottle_box
h_px_person = y2_person - y1_person
h_px_bottle = y2_bottle - y1_bottle
lOMoARcPSD| 58933639
lOMoARcPSD| 58933639
raw_height_cm = h_px_person * bottle_height_cm / h_px_bottle
if abs(raw_height_cm - smoothed_height) > min_delta:
height_buffer.append(raw_height_cm)
smoothed_height = sum(height_buffer) / len(height_buffer)
cv2.rectangle(frame_undistort, person_box[:2], person_box[2:], (0, 255, 0), 2)
cv2.rectangle(frame_undistort, bottle_box[:2], bottle_box[2:], (255, 0, 0), 2)
cv2.putText(frame_undistort, f"Height: {smoothed_height:.1f} cm",
(person_box[0], person_box[1] - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
current_time = time.time() if current_time
- last_saved_time >= interval:
output_dir = "KQ_DO"
os.makedirs(output_dir, exist_ok=True)
existing = [f for f in os.listdir(output_dir) if f.startswith("Height_2m_") and
f.endswith(".jpg")]
index = len(existing) + 1
result_path = os.path.join(output_dir, f"Height_2m_{index}.jpg")
cv2.imwrite(result_path, frame_undistort) print(f"Đã lưu:
{result_path}") last_saved_time = current_time
resized = cv2.resize(frame_undistort, (0, 0), fx=0.5,
fy=0.5) cv2.imshow("Chiều cao khi đo", resized) if
cv2.waitKey(1) == 27: # Nhấn ESC để thoát break
cap.release()
lOMoARcPSD| 58933639
cv2.destroyAllWindows()
Chương 4. KẾT QUẢ
Hình ảnh kết quả đạt được:
Hình 6. Hình ảnh đo thực tế
lOMoARcPSD| 58933639
Hình 7. Hình ảnh kết quả đạt được
lOMoARcPSD| 58933639
Chương 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
5.1. Đánh giá
Sau khi vận hành hệ thống ta thấy hệ thống khả năng phát hiện người trong video
một cách nhanh chóng chính xác 100% phát hiện chính xác 100% vật mẫu (chai nước).
Với chiều cao hệ thống sử dụng mối quan hệ tuyến tính giữa chiều cao pixel trong video
chiều cao thực tế (theo công thức hiệu chỉnh) để ước lượng chiều cao người. Giao diện trực
quan hộp phát hiện người, khung bao quanh vật thể với màu khác nhau và chiều cao được
hiển thị trực tiếp trên video, giúp người dùng dễ dàng quan sát và hiểu kết quả.
Với khoảng cách từ 200cm-400cm thực nghiệm có các kết quả sau:
Khoảng cách 400cm chiều cao dao động từ 163cm-173cm sai số lớn
Khoảng cách 300cm chiều cao dao động từ 173cm-185cm sai số lớn
Khoảng cách 240cm chiều cao dao động từ 177cm-183cm sai số ít
Khoảng cách 400cm chiều cao dao động từ 179.6cm-180.7cm khá chính xác
Khoảng cách 0-200cm c quay không quay được chân nên khoảng cách tối thiểu phải
là 2m.
Vậy với các kết quả thu được sau khi thực nghiệm nhóm chúng em rút ra được kết luận
khoảng cách từ 200cm-240cm dùng cam điện thoại Android Samsung A3X đặt cam cao
130cm so với đất thì chiều cao cho ra khá chuẩn so với thực tế. Nhược điểm là còn phải sài
chai nước làm vật mốc để đo chưa có loại bỏ hoàn toàn.
Tuy nhiên độ chính xác còn phụ thuộc vào tư thế người đo, vị trí và góc quay camera,
nếu người đứng nghiêng, cúi đầu, hoặc camera không được đặt cố định vđộ cao và góc
nhìn (vuông góc) thì chiều cao tính toán thể sai lệch. Ngoài ra, khi có nhiều người trong
khung hình, hệ thống chưa phân biệt chọn được ai là đối tượng chính cần để đo. Chất lượng
mạng và ánh sáng cũng ảnh hưởng đến kết quả và công thức quy đổi chỉ áp dụng chính xác
khi điều kiện chụp (khoảng cách, tiêu cự, độ phân giải) cố định, với mỗi loại camera hoặc
khoảng cách khác, cần hiệu chuẩn lại.
5.2. Kết luận
Sau quá trình nghiên cứu, xây dựng và thực hiện thì hệ thống đo chiều cao tự
động cho người sử dụng camera đã được triển khai thành công với các mục tiêu
bản đặt ra. Hệ thống khả năng thực hiện các chức năng phát hiện và đo chiều cao
người tự động, kết quả đo có sai số nhtrong điều kiện tiêu chuẩn, sử dụng xử lý ảnh
giúp loại bỏ sự phụ thuộc vào thiết bị đo truyền thống.
Tóm lại, đề tài “HỆ THỐNG ĐO CHIỀU CAO CHO NGƯỜI SỬ DỤNG
CAMERA đã hoàn thành tốt những yêu cầu đặt ra, cung cấp những giải pháp có tính
ứng dụng cao mở ra những ớng nghiên cứu mới trong lĩnh vực xử ảnh. Sự
thành công của đề tài đã góp phần khẳng định tính đúng đắn và hiệu quả của việc ứng
dụng các giải pháp kỹ thuật hiện đại vào thực tiễn.
5.3. Hướng phát triển
- Tích hợp AI nâng cao độ chính xác và khả năng phân tích tư thế.
lOMoARcPSD| 58933639
- Tích hợp thuật toán theo dõi đối tượng (object tracking) để xác định và theo dõi một
người duy nhất trong khung hình, tránh đo nhầm khi có nhiều người xuất hiện đồng
thời.
- Tích hợp thuật toán nhận dạng khuôn mặt để phân biệt người dùng, từ đó lưu trữ
theo dõi quá trình phát triển chiều cao theo từng nhân. - Tối ưu giao diện người
dùng, hỗ trợ đa nền tảng (web/mobile).
TÀI LIỆU THAM KHẢO
[1].https://www.studocu.vn/vn/document/international-university-vnu-hcm/all-of-
thecourses/tong-quan-ve-yolo-v5-binh-thuong/50994507
[2].https://viblo.asia/p/tong-hop-kien-thuc-tu-yolov1-den-yolov5-phan-3-63vKjgJ6Z2R
https://docs.ultralytics.com/vi/yolov5
[3].https://www.pandaml.com/object-detection-yolo/
[4].https://www.researchgate.net/publication/
381880387_Automatic_human_height_measurement_system_based_on_camera_sensor_w
ith_deep-learning_and_linear_regression_analysis
[5]. https://fptshop.com.vn/tin-tuc/danh-gia/opencv-la-gi-168801
[6]. https://vnptai.io/vi/blog/detail/opencv-la-gi
[7]. https://www.nvidia.com/en-us/glossary/pytorch/
[8].https://tinhte.vn/thread/pytorch-la-gi-uu-nhuoc-diem-ung-dung-cua-pytorch.4003522/

Preview text:

lOMoAR cPSD| 58933639
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ BÁO CÁO Môn: Xử Lí Ảnh
ĐỀ TÀI: HỆ THỐNG ĐO CHIỀU CAO TỰ ĐỘNG CHO
NGƯỜI SỬ DỤNG CAMERA
GVHD: TS. Dương Minh Thiện
SVTH: Thạch Lâm Huy – 22151094
Lê Thế Khôi – 22151106
TP. Hồ Chí Minh, tháng 06 năm 2025 lOMoAR cPSD| 58933639
Nhóm sinh viên thực hiện. STT HỌ VÀ TÊN MSSV
CÔNG VIỆC THỰC HIỆN KẾT QUẢ 1 Lê Thế Khôi 22151106
Xử lí ảnh, file word, ppt 100% 2 Thạch Lâm Huy 22151094
Xử lí ảnh , file word, ppt 100%
NHẬN XÉT CỦA GIẢNG VIÊN
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
...................................................................................................................................... .
...................................................................................................................................... .
.......................................................................................................................................
.......................................................................................................................................
Điểm ........................................................................................................................... Kí tên lOMoAR cPSD| 58933639 LỜI CẢM ƠN
Trong khoảng thời gian được học tập và rèn luyện dưới mái trường Đại học Sư phạm
Kỹ thuật Tp. Hồ Chí Minh đã cho chúng em cơ hội tiếp thu những kiến thức không chỉ có
trong sách vở mà còn là những câu chuyện thực tế, những ví dụ minh họa sinh động được
các Thầy, Cô truyền đạt vào những buổi học lý thuyết và thực hành, tất cả sẽ là hành trang
tri thức quý báu, là nền tảng vững vàng nâng bước chúng em trên con đường sự nghiệp phía trước.
Nhóm em xin được gửi lời cảm ơn chân thành đến thầy Dương Minh Thiện đã tận tình
chỉ bảo, hướng dẫn và đóng góp những ý kiến vô cùng quý giá giúp nhóm em hoàn thành
báo cáo cuối kì cho môn học xử lí ảnh. Nhóm cũng xin cám ơn quý Thầy, Cô đang công tác
tại khoa Điện - Điện tử cùng các Thầy, Cô trong toàn trường đã giảng dạy nhiệt tình và truyền
tải các kinh nghiệm quý giá cho nhóm trong suốt thời gian học vừa qua.
Tuy đã có sự chuẩn bị trong bài báo cáo cuối kì môn học này song không thể tránh
khỏi những sai sót. Vì vậy, nhóm em rất mong nhận được sự chỉ bảo, đóng góp ý kiến của
Thầy để nhóm có cơ hội nâng cao kiến thức và kĩ năng của mình, cũng như là một nền tảng
vững chắc để nhóm tiến xa hơn trong tương lai.
Nhóm em xin chân thành cảm ơn ! lOMoAR cPSD| 58933639 MỤC LỤC
LỜI CẢM ƠN ...................................................................................................................... 1
MỤC LỤC ............................................................................................................................ 2
DANH MỤC HÌNH ẢNH ................................................................................................... 2
Chương 1. TỔNG QUAN .................................................................................................... 3
1.1. Đặt vấn đề .............................................................................................................. 3
1.2. Mục tiêu đề tài ....................................................................................................... 3
1.3. Nội dung ................................................................................................................. 3

Chương 2. CƠ SỞ LÝ THUYẾT........................................................................................ 4
2.1. Giới thiệu về xử lí ảnh ........................................................................................... 4
2.2. Thuật toán xử lí ..................................................................................................... 4
2.2.1. Giới thiệu về mô hình YOLO ............................................................................ 4
2.3. Thư viện OpenCV ................................................................................................. 7
2.4. Thư viện PyTorch .................................................................................................. 7

Chương 3. XÂY DỰNG HỆ THỐNG ................................................................................ 9
3.1. Lưu đồ giải thuật ................................................................................................... 9
3.2. Quy trình hoạt động .............................................................................................. 9

Chương 4. KẾT QUẢ ........................................................................................................ 14
Hình ảnh kết quả đạt được: ...................................................................................... 14
Chương 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ..................................................... 16
5.1. Đánh giá ............................................................................................................... 16
5.2. Kết luận ................................................................................................................ 16
5.3. Hướng phát triển ................................................................................................. 16

TÀI LIỆU THAM KHẢO ................................................................................................. 17 DANH MỤC HÌNH ẢNH
Hình 1. Các bước cơ bản trong quá trình xử lí ảnh..........................................................5
Hình 2. Hình ảnh minh hoạ.................................................................................................6
Hình 4. Thư viện OpenCV...................................................................................................8
Hình 5. Thư viện PyTorch...................................................................................................9
Hình 6. Lưu đồ giải thuật của hệ thống...........................................................................10
Hình 7. Hình ảnh đo thực tế..............................................................................................14
Hình 8. Hình ảnh kết quả đạt được..................................................................................14 lOMoAR cPSD| 58933639
Chương 1. TỔNG QUAN
1.1. Đặt vấn đề
Trong bối cảnh xã hội ngày càng phát triển theo hướng công nghiệp hóa, hiện đại hóa,
việc ứng dụng khoa học kỹ thuật vào đời sống con người trở nên ngày càng phổ biến và đóng
vai trò quan trọng trong việc nâng cao chất lượng sống. Đặc biệt, công nghệ xử lý ảnh và trí
tuệ nhân tạo đang dần khẳng định vị thế trong nhiều lĩnh vực như y tế, nông nghiệp, sản
xuất, và đời sống thường nhật.
Trong số đó, nhu cầu đo chiều cao cơ thể người là một yêu cầu phổ biến trong y tế, thể
thao, giáo dục, cũng như trong các ứng dụng quản lý thông tin cá nhân. Tuy nhiên, phương
pháp đo truyền thống bằng thước cơ học thường mất thời gian, yêu cầu sự hỗ trợ của người
khác, và không phù hợp với môi trường tự động hóa.
Vì vậy, việc xây dựng một hệ thống đo chiều cao tự động sử dụng camera là rất cần
thiết. Hệ thống này có thể ứng dụng công nghệ xử lý ảnh để nhận dạng và phân tích hình
ảnh cơ thể người, từ đó tính toán chiều cao một cách nhanh chóng, chính xác mà không cần
tiếp xúc vật lý. Đây không chỉ là một giải pháp tiện lợi và hiện đại, mà còn góp phần vào xu
hướng phát triển các hệ thống thông minh, tự động hóa trong đời sống.
Từ những lý do trên, nhóm em thực hiện đề tài “Hệ thống đo chiều cao tự động cho
người sử dụng camera” với mong muốn kết hợp giữa lý thuyết và thực tiễn, áp dụng những
gì đã học để giải quyết bài toán đời sống một cách hiệu quả và sáng tạo.
1.2. Mục tiêu đề tài
Đề tài nghiên cứu được lên ý tưởng và thực hiện hướng đến những mục tiêu:
- Xây dựng một hệ thống phát hiện và đo chiều cao con người theo thời gian thực, sử
dụng camera điện thoại kết nối qua mạng nội bộ (IP Webcam).
- Ứng dụng các kỹ thuật xử lý ảnh để phát hiện và tính toán chiều cao một cách chính xác.
- Giao diện đơn giản, dễ sử dụng, có thể triển khai trên các thiết bị, có khả năng áp dụng thực tế. 1.3. Nội dung Chương 1: Tổng quan
Chương 2: Cơ sở lý thuyết
Chương 3: Xây dựng chương trình Chương 4: Kết quả
Chương 5: Kết luận và hướng phát triển lOMoAR cPSD| 58933639
Chương 2. CƠ SỞ LÝ THUYẾT
2.1. Giới thiệu về xử lí ảnh
Xử lý ảnh (Image Processing), là quá trình sử dụng máy tính để thực hiện các thao
tác phân tích, biến đổi hoặc nâng cao hình ảnh thông qua các thuật toán chuyên biệt. Đây là
một lĩnh vực đa ngành, kết hợp giữa khoa học máy tính, toán học ứng dụng và kỹ thuật điện
– điện tử, nhằm giúp trích xuất thông tin hữu ích từ hình ảnh, cải thiện chất lượng thị giác
hoặc phục vụ các mục đích đặc thù.
Khác với xử lý ảnh tương tự (analog), xử lý ảnh số có nhiều lợi thế vượt trội như:
tính tự động hóa cao, dễ tích hợp vào hệ thống thông minh; linh hoạt trong việc xử lý và điều
chỉnh tham số; khả năng thực hiện các phép biến đổi phức tạp một cách chính xác và ổn
định. Nhờ vào các ưu điểm này, xử lý ảnh kỹ thuật số ngày nay đã được ứng dụng rộng rãi
trong nhiều lĩnh vực thực tiễn, chẳng hạn như: Y tế (phân tích ảnh chụp X-quang, MRI, CT
để hỗ trợ chẩn đoán bệnh,..), An ninh (nhận diện khuôn mặt, giám sát tự động qua camera,..),
Viễn thám (xử lý ảnh vệ tinh phục vụ đo đạc địa hình, theo dõi môi trường,..), Công nghiệp
(kiểm tra bề mặt sản phẩm, phát hiện lỗi trong dây chuyền sản xuất,..) và nhiều lĩnh vực khác nửa.
Quá trình xử lý ảnh kỹ thuật số thường trải qua các bước cơ bản sau:
- Thu nhận ảnh: sử dụng cảm biến, camera, hoặc thiết bị quét.
- Tiền xử lý ảnh: cải thiện chất lượng ban đầu như khử nhiễu, tăng độ sắc nét hoặc tương phản.
- Phân đoạn ảnh: chia ảnh thành các vùng có đặc điểm riêng biệt, thường là vật thể và nền.
- Trích xuất đặc trưng: xác định các đặc điểm quan trọng như cạnh, hình dạng, màu sắc,...
- Nhận dạng và phân tích: áp dụng các thuật toán để phân loại, đo đạc, hoặc ra quyết
định dựa trên hình ảnh.
Hình 1. Các bước cơ bản trong quá trình xử lí ảnh
2.2. Thuật toán xử lí
2.2.1. Giới thiệu về mô hình YOLO
YOLO (You Only Look Once) là một trong những mô hình nổi tiếng nhất trong Object
Detection (phát hiện đối tượng) với khả năng xử lý nhanh và độ chính xác cao, là một mô lOMoAR cPSD| 58933639
hình CNN để detect object mà một ưu điểm nổi trội là nhanh hơn nhiều so với những mô
hình cũ. Khác với các phương pháp truyền thống tách riêng bước tạo vùng đề xuất (region
proposals) và bước phân loại đối tượng, YOLO xử lý tất cả trong một lần, tức là "nhìn một
lần" và dự đoán cả Bounding box (hộp chứa đối tượng) và Class (loại đối tượng).
YOLO được ứng dụng rộng rãi trong nhiều lĩnh vực: giám sát an ninh (nhận diện
người, xe, hành vi đáng ngờ); Xe tự lái (Phát hiện người đi bộ, biển báo, phương tiện); Y tế
(Phát hiện khối u, tế bào trong ảnh y học); Nông nghiệp (Đếm số cây, theo dõi sâu bệnh);...
Hình 2. Hình ảnh minh hoạ
Cách hoạt động của YOLO
YOLO chia ảnh đầu vào thành một lưới gồm nhiều ô, mỗi ô có trách nhiệm dự đoán:
- Một hoặc nhiều bounding box
- Xác suất tồn tại đối tượng trong ô đó
- Class probabilities (khả năng thuộc các lớp như người, xe,
chó...) Cụ thể, mỗi bounding box chứa:
- (x, y): tọa độ tâm của box
- (w, h): chiều rộng và chiều cao (tương đối với toàn ảnh)
- Confidence score: độ tin cậy có đối tượng ở box đó
- Class probabilities: xác suất đối tượng thuộc các lớp khác nhau
Về cơ bản, YOLO chia ảnh đầu vào thành các ô nhỏ, mô hình sẽ dự đoán xác xuất đối
tượng trong các đường bao (bounding-box) xung quanh mỗi ô nhỏ này. Những đường bao
có xác xuất cao sẽ được giữ lại và sử dụng cho nhiệm vụ xác định vị trí của đối tượng trong ảnh.
YOLO có nhiều phiên bản, trong đề tài “ Hệ thống đo chiều cao cho người sử dụng
camer này nhóm sử dụng phiên bản YOLOv5 do Ultralytics phát triển từ năm 2020 là bản
cập nhật mới nhất, kế thừa và cải tiến so với các đời YOLO trước. Với các ứng dụng như
trong: giám sát an ninh, nhận dạng khuôn mặt, đếm và phân loại phương tiện, chẩn đoán hình ảnh y tế,... lOMoAR cPSD| 58933639
Phát hiện đối tượng (Object Detection):là quá trình xác định vị trí và phân loại các vật
thể xuất hiện trong một bức ảnh hoặc video. Mỗi dự đoán bao gồm ba thành phần chính:
khung giới hạn (bounding box) là hình chữ nhật bao quanh đối tượng, nhãn phân loại (class
label) thể hiện loại đối tượng như người, xe hơi, chó…, và độ tin cậy (confidence score) cho
biết mức độ chắc chắn của mô hình đối với dự đoán đó. Kỹ thuật này phù hợp với các ứng
dụng mà mục tiêu là nhận diện “có gì” và “ở đâu” trong ảnh, mà không cần chi tiết chính
xác về hình dáng hoặc góc nhìn của vật thể.
Ưu điểm chính của YOLOv5 là:
- Tăng tốc độ: Nhanh hơn và hiệu quả hơn trong việc phát hiện đối tượng so với các phiên bản trước.
- Độ chính xác: Cải thiện đáng kể về mAP (mean Average Precision) so với YOLOv4
và các bản tiền nhiệm.
- Phân loại đa lớp: Có thể nhận diện và phân loại đồng thời nhiều đối tượng khác nhau
trong cùng một khung hình.
- Độ linh hoạt: Triển khai đơn giản trên đa nền tảng (Windows, Linux, macOS) và
nhiều loại thiết bị (GPU, CPU, NPU).
- Giao diện sử dụng đơn giản: Cung cấp bộ script đồng nhất, dễ cài đặt và chạy, phù
hợp với cả người mới bắt đầu.
Quy trình xử lý ảnh trong YOLOv5:
- Bước tiền xử lý: Ảnh đầu vào được đọc, áp dụng Letterbox để giữ tỷ lệ, sau đó resize
về kích thước chuẩn và chuẩn hóa pixel.
- Bước trích xuất đặc trưng: Mạng backbone CSP-Darknet tạo ra các bản đồ đặc trưng ở nhiều cấp độ.
- Bước kết hợp đặc trưng: PANet kết hợp các đặc trưng từ nhiều tầng nhằm tăng khả
năng phát hiện đối tượng, đặc biệt là các vật thể nhỏ.
- Bước dự đoán: Phần Head thực hiện dự đoán bounding box, nhãn lớp và độ tin cậy cho mỗi vùng trên ảnh.
- Bước hậu xử lý: Áp dụng Non-Maximum Suppression để loại bỏ các dự đoán trùng
lặp, chỉ giữ lại kết quả chính xác nhất.
YOLOv5 là mô hình one-stage dự đoán bounding box và nhãn lớp chỉ trong một bước.
Ưu điểm là nhanh cân bằng tốt giữa tốc độ và độ chính xác, phù hợp với các ứng dụng thời gian thực.
Yolov5 có 5 cấu trúc mạng chính: Model Version Latency T4 COCO mAP 50-95 TensorRT10 FP16(ms/img) YOLOv5 N 1.12 28 YOLOv5 S 1.92 37.4 lOMoAR cPSD| 58933639 YOLOv5 M 4.03 45.4 YOLOv5 L 6.61 49 YOLOv5 X 11.89 50.7
Bảng 1. Version của Yolov5
Lý do nhóm lựa chọn verson Yolov5m là:
- Chạy nhanh (Latency thấp)
- Tốn ít tài nguyên (Ram/GPU)
- Phù hợp với thời gian thực (do kết nối với IP Webcam)
2.3. Thư viện OpenCV
Hình 3. Thư viện OpenCV
OpenCV (Open Source Computer Vision Library) là một thư viện mã nguồn mở được
phát triển dành riêng cho các ứng dụng xử lý ảnh và thị giác máy tính. Thư viện này cung
cấp một tập hợp đa dạng các công cụ và thuật toán phục vụ cho việc phân tích ảnh, xử lý
video từ nhận dạng vật thể, khuôn mặt cho đến theo dõi chuyển động trong khung hình.
OpenCV nổi bật nhờ khả năng phân tích hình ảnh mạnh mẽ, được ứng dụng rộng rãi
trong các lĩnh vực như robot, thị giác máy tính và phương tiện tự hành. Thư viện hỗ trợ đa
nền tảng và đa ngôn ngữ, bao gồm C++, Python, Java và MATLAB, giúp lập trình viên dễ
dàng tích hợp vào các dự án với môi trường phát triển phù hợp.
Các tính năng chính của OpenCV bao gồm: xử lý ảnh cơ bản, phát hiện cạnh và đường
viền, thực hiện các phép biến đổi hình học như xoay, thay đổi kích thước ảnh. Thư viện còn
cho phép truy xuất video và tương tác với camera trong thời gian thực. Ngoài ra, nó còn hỗ
trợ các chức năng như nhận diện khuôn mặt, chuyển đổi không gian màu, phân tích màu sắc,
phát hiện và theo dõi điểm đặc trưng, xử lý ảnh nâng cao bằng histogram hoặc các bộ lọc
hình thái học. Một điểm mạnh nữa của OpenCV là khả năng tích hợp với các mô hình học
sâu và học máy, giúp mở rộng ứng dụng trong các hệ thống thông minh. Thư viện hoạt động
ổn định trên nhiều hệ điều hành như Windows, Linux, macOS, cũng như các nền tảng di động như Android và iOS.
2.4. Thư viện PyTorch
PyTorch là một thư viện mã nguồn mở dành cho học máy, được phát triển trên nền
tảng Python. Thư viện này được sử dụng rộng rãi trong việc xây dựng và triển khai các mô lOMoAR cPSD| 58933639
hình học sâu, đặc biệt trong các lĩnh vực như nhận diện hình ảnh và xử lý ngôn ngữ tự nhiên.
Nhờ cấu trúc linh hoạt, dễ sử dụng và khả năng tương tác cao, PyTorch cho phép các nhà
nghiên cứu và kỹ sư nhanh chóng thử nghiệm, thiết kế và triển khai các mô hình phức tạp.
Thư viện được phát triển bởi nhóm Facebook AI Research (FAIR) và đã nhanh chóng trở
thành một trong những công cụ quan trọng trong cộng đồng trí tuệ nhân tạo.
Hình 4. Thư viện PyTorch
Các tính năng chính của PyTorch như: biểu đồ tính toán động (Dynamic
Computational Graph), tự động tính đạo hàm (Autograd), thư viện mạng nơ-ron mạnh mẽ
(torch.n), hỗ trợ GPU và CUDA, Tensor linh hoạt, tương thích NumPy; Thư viện mở rộng:
torchvision, torchaudio, torchtext, Hỗ trợ triển khai: TorchScript, ONNX, Huấn luyện phân
tán (Distributed Training), Tích hợp công cụ trực quan hóa, Thân thiện với nghiên cứu và phát triển.
Một trong những đặc điểm nổi bật của PyTorch là khả năng hỗ trợ biểu đồ tính toán
động (Dynamic Computational Graph), cho phép người dùng thay đổi cấu trúc mạng nơron
ngay trong quá trình thực thi. Điều này mang lại sự linh hoạt hơn hẳn so với các framework
sử dụng đồ thị tĩnh như TensorFlow (trong các phiên bản cũ). Thông qua việc tích hợp các
tính năng mạnh mẽ, ưu việt này, PyTorch đã trở thành một công cụ hỗ trợ hiệu quả, giúp
người dùng xây dựng và áp dụng thành công các mô hình học máy, học sâu vào nhiều lĩnh
vực ứng dụng khác nhau, từ nghiên cứu khoa học nền tảng đến các giải pháp công nghiệp thực tế. lOMoAR cPSD| 58933639
Chương 3. XÂY DỰNG HỆ THỐNG
3.1. Lưu đồ giải thuật
Hình 5. Lưu đồ giải thuật của hệ thống
3.2. Quy trình hoạt động
Bước 1: Hệ thống bắt đầu kết nối tới camera điện thoại Android thông qua địa chỉ IP
Webcam. Sau đó, hệ thống xoay khung hình cho đúng hướng hiển thị và áp dụng hiệu chỉnh
méo ảnh bằng các thông số nội tại từ tập tin hiệu chỉnh camera. Quá trình này giúp đảm bảo
chất lượng ảnh đầu vào ổn định và chính xác trước khi đưa vào phân tích.
Bước 2: Sau đó hệ thống sử dụng mô hình học sâu YOLOv5m để phát hiện các đối
tượng trong ảnh. Trong mỗi khung hình, YOLOv5 xác định và trả về thông tin bao gồm
bounding box, label là "person" (người) và "bottle" (chai nước), cùng với độ tin cậy. Hệ
thống ưu tiên xử lý khi phát hiện được cả người và chai nước, vì chai nước được dùng làm
đối tượng tham chiếu chiều cao.
Bước 3: Khi trong khung hình có cả người và chai nước hệ thống tính chiều cao người
dựa trên tỉ lệ chiều cao pixel giữa hai đối tượng, chiều cao thật của chai nước đã biết trước
(21 cm) như sử dụng công thức:
chiềucaongười (cm)=chiềucaongười(pixel)×21(cm) (1)
chiềucaochai(pixel) lOMoAR cPSD| 58933639
Để giảm nhiễu do thay đổi nhỏ giữa các khung hình, hệ thống sử dụng một bộ đệm
trượt để làm mượt giá trị chiều cao, chỉ cập nhật khi sự thay đổi vượt quá một ngưỡng nhất định.
Bước 4: Sau khi tính toán chiều cao, hệ thống sẽ hiển thị bounding box xung quanh
người và chai nước, ghi nhãn chiều cao ước tính ngay trên khung hình, hiển thị ảnh đầu ra
theo thời gian thực để người dùng dễ quan sát. Cứ 10 giây, nếu có đầy đủ dữ liệu phát hiện,
hệ thống tự động lưu lại khung hình chứa kết quả đo chiều cao vào thư mục.
3.3. Chương trình Python import cv2 import numpy as np import torch import os import time from collections import deque
data = np.load("camera_calib_data.npz")
cameraMatrix = data['cameraMatrix']
distCoeffs = data['distCoeffs']
model = torch.hub.load('ultralytics/yolov5', 'yolov5m')
# Kết nối webcam từ Android url =
"http://192.168.1.71:8080/video" cap = cv2.VideoCapture(url) bottle_height_cm = 21
height_buffer = deque(maxlen=5) smoothed_height = 0
min_delta = 1.0 # Ngưỡng thay đổi last_saved_time = 0 lOMoAR cPSD| 58933639 interval = 10 while True: ret, frame = cap.read() if not ret: break
frame = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE) h, w = frame.shape[:2]
new_mtx, _ = cv2.getOptimalNewCameraMatrix(cameraMatrix, distCoeffs, (w, h), 1, (w, h))
frame_undistort = cv2.undistort(frame, cameraMatrix, distCoeffs, None, new_mtx) results = model(frame_undistort) person_box = None bottle_box = None for det in results.xyxy[0]: x1, y1, x2, y2, conf, cls = det cls = int(cls) if cls == 0: # person
person_box = (int(x1), int(y1), int(x2), int(y2)) elif cls == 39: # bottle
bottle_box = (int(x1), int(y1), int(x2), int(y2))
if person_box and bottle_box:
_, y1_person, _, y2_person = person_box
_, y1_bottle, _, y2_bottle = bottle_box
h_px_person = y2_person - y1_person
h_px_bottle = y2_bottle - y1_bottle lOMoAR cPSD| 58933639 lOMoAR cPSD| 58933639
raw_height_cm = h_px_person * bottle_height_cm / h_px_bottle
if abs(raw_height_cm - smoothed_height) > min_delta:
height_buffer.append(raw_height_cm)
smoothed_height = sum(height_buffer) / len(height_buffer)
cv2.rectangle(frame_undistort, person_box[:2], person_box[2:], (0, 255, 0), 2)
cv2.rectangle(frame_undistort, bottle_box[:2], bottle_box[2:], (255, 0, 0), 2)
cv2.putText(frame_undistort, f"Height: {smoothed_height:.1f} cm",
(person_box[0], person_box[1] - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
current_time = time.time() if current_time
- last_saved_time >= interval: output_dir = "KQ_DO"
os.makedirs(output_dir, exist_ok=True)
existing = [f for f in os.listdir(output_dir) if f.startswith("Height_2m_") and f.endswith(".jpg")] index = len(existing) + 1
result_path = os.path.join(output_dir, f"Height_2m_{index}.jpg")
cv2.imwrite(result_path, frame_undistort) print(f"Đã lưu:
{result_path}") last_saved_time = current_time
resized = cv2.resize(frame_undistort, (0, 0), fx=0.5,
fy=0.5) cv2.imshow("Chiều cao khi đo", resized) if
cv2.waitKey(1) == 27: # Nhấn ESC để thoát break cap.release() lOMoAR cPSD| 58933639 cv2.destroyAllWindows()
Chương 4. KẾT QUẢ
Hình ảnh kết quả đạt được:
Hình 6. Hình ảnh đo thực tế lOMoAR cPSD| 58933639
Hình 7. Hình ảnh kết quả đạt được lOMoAR cPSD| 58933639
Chương 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1. Đánh giá
Sau khi vận hành hệ thống ta thấy hệ thống có khả năng phát hiện người trong video
một cách nhanh chóng và chính xác 100% và phát hiện chính xác 100% vật mẫu (chai nước).
Với chiều cao hệ thống sử dụng mối quan hệ tuyến tính giữa chiều cao pixel trong video và
chiều cao thực tế (theo công thức hiệu chỉnh) để ước lượng chiều cao người. Giao diện trực
quan có hộp phát hiện người, khung bao quanh vật thể với màu khác nhau và chiều cao được
hiển thị trực tiếp trên video, giúp người dùng dễ dàng quan sát và hiểu kết quả.
Với khoảng cách từ 200cm-400cm thực nghiệm có các kết quả sau:
Khoảng cách 400cm chiều cao dao động từ 163cm-173cm sai số lớn
Khoảng cách 300cm chiều cao dao động từ 173cm-185cm sai số lớn
Khoảng cách 240cm chiều cao dao động từ 177cm-183cm sai số ít
Khoảng cách 400cm chiều cao dao động từ 179.6cm-180.7cm khá chính xác
Khoảng cách 0-200cm góc quay không quay được chân nên khoảng cách tối thiểu phải là 2m.
Vậy với các kết quả thu được sau khi thực nghiệm nhóm chúng em rút ra được kết luận
khoảng cách từ 200cm-240cm dùng cam điện thoại Android Samsung A3X đặt cam cao
130cm so với đất thì chiều cao cho ra khá chuẩn so với thực tế. Nhược điểm là còn phải sài
chai nước làm vật mốc để đo chưa có loại bỏ hoàn toàn.
Tuy nhiên độ chính xác còn phụ thuộc vào tư thế người đo, vị trí và góc quay camera,
nếu người đứng nghiêng, cúi đầu, hoặc camera không được đặt cố định về độ cao và góc
nhìn (vuông góc) thì chiều cao tính toán có thể sai lệch. Ngoài ra, khi có nhiều người trong
khung hình, hệ thống chưa phân biệt chọn được ai là đối tượng chính cần để đo. Chất lượng
mạng và ánh sáng cũng ảnh hưởng đến kết quả và công thức quy đổi chỉ áp dụng chính xác
khi điều kiện chụp (khoảng cách, tiêu cự, độ phân giải) cố định, với mỗi loại camera hoặc
khoảng cách khác, cần hiệu chuẩn lại. 5.2. Kết luận
Sau quá trình nghiên cứu, xây dựng và thực hiện thì hệ thống đo chiều cao tự
động cho người sử dụng camera đã được triển khai thành công với các mục tiêu cơ
bản đặt ra. Hệ thống có khả năng thực hiện các chức năng phát hiện và đo chiều cao
người tự động, kết quả đo có sai số nhỏ trong điều kiện tiêu chuẩn, sử dụng xử lý ảnh
giúp loại bỏ sự phụ thuộc vào thiết bị đo truyền thống.
Tóm lại, đề tài “HỆ THỐNG ĐO CHIỀU CAO CHO NGƯỜI SỬ DỤNG
CAMERA“ đã hoàn thành tốt những yêu cầu đặt ra, cung cấp những giải pháp có tính
ứng dụng cao và mở ra những hướng nghiên cứu mới trong lĩnh vực xử lý ảnh. Sự
thành công của đề tài đã góp phần khẳng định tính đúng đắn và hiệu quả của việc ứng
dụng các giải pháp kỹ thuật hiện đại vào thực tiễn.
5.3. Hướng phát triển
- Tích hợp AI nâng cao độ chính xác và khả năng phân tích tư thế. lOMoAR cPSD| 58933639
- Tích hợp thuật toán theo dõi đối tượng (object tracking) để xác định và theo dõi một
người duy nhất trong khung hình, tránh đo nhầm khi có nhiều người xuất hiện đồng thời.
- Tích hợp thuật toán nhận dạng khuôn mặt để phân biệt người dùng, từ đó lưu trữ và
theo dõi quá trình phát triển chiều cao theo từng cá nhân. - Tối ưu giao diện người
dùng, hỗ trợ đa nền tảng (web/mobile).
TÀI LIỆU THAM KHẢO
[1].https://www.studocu.vn/vn/document/international-university-vnu-hcm/all-of-
thecourses/tong-quan-ve-yolo-v5-binh-thuong/50994507
[2].https://viblo.asia/p/tong-hop-kien-thuc-tu-yolov1-den-yolov5-phan-3-63vKjgJ6Z2R
https://docs.ultralytics.com/vi/yolov5
[3].https://www.pandaml.com/object-detection-yolo/
[4].https://www.researchgate.net/publication/
381880387_Automatic_human_height_measurement_system_based_on_camera_sensor_w
ith_deep-learning_and_linear_regression_analysis
[5]. https://fptshop.com.vn/tin-tuc/danh-gia/opencv-la-gi-168801
[6]. https://vnptai.io/vi/blog/detail/opencv-la-gi
[7]. https://www.nvidia.com/en-us/glossary/pytorch/
[8].https://tinhte.vn/thread/pytorch-la-gi-uu-nhuoc-diem-ung-dung-cua-pytorch.4003522/