6. KẾT CẤU CỦA LUẬN ÁN
1.4.2 Phương pháp và thuật toán tính kích thước cơ thể người
Quá trình đo cơ thể tự động có thể được chia thành hai bước: (1) hận dạng n
mốc và (2) đo kích thước bằng cách tạo ra một đường dẫn dựa trên các mốc. Trong các phép đo cơ thể tự động 3D, bước xác định mốc quan trọng hơn để tự động hóa hơn so với đo kích thước. Nhiều nghiên cứu đã được tiến hành về việc xác định mốc tự động, nhưng có rất ít nghiên cứu về đo kích thước tự động. Một số công trình nghiên cứu và đưa ra cách xác định kích thước như sau:
Tác gi ả Jun- Ming Lu [73] sau khi trích xuất được 12 điểm m c tác gi n ố ả tiế hành đo kích thước cơ thể người. Các kích thước này có thể được phân loại như kích thước thẳng, kích thước đường cong, đường bao và các khu vực cắt ngang.
Kích thước thẳng và đường cong: Kích thước thẳng có thể dễ dàng thu được
bằng cách tính toán khoảng cách giữa hai điểm mốc hoặc khoảng cách thẳng đứng
giữa một cột mốc và độ dốc. Kích thước đường cong là chiều dài cung của đường biên (viền) của cơ thể con người. Trong khi đó tính độ sâu của hạ nách, quét toàn bộ
cơ thể lên mặt phẳng đối xứng dọc cơ thể để có được một đường viền hai chiều của
cơ thể con người, theo định nghĩa cách xác định của kích thước này thì chiều cao của điểm cổ thứ bảy và chiều cao của nách sẽ được xem xét. Trên đường viền bao
độ dài cung có thể xác định được bằng cách tổng hợp độ dài của các đoạn thẳng.là
Chu vi và các mặt cắt ngang: Kích thước vòng có thể được tính bằng phương pháp xấp xỉ đa giác lồi. Nguyên tắc xấp xỉ đa giác lồi tương tự như sử dụng băng để đo chu vi. Thuật toán của phương pháp xấp x ỉ đa giác lồi được minh h a trong hình ọ 1.30. Bước đầu tiên là tìm điểm có giá trị X tối đa từ tập dữ liệu ban đầu của một lát
cắt, như thể hiện trong hình 1.30 b. Sau đó, bắt đầu từ điểm này và vạch ngược chiều kim đồng hồ để xác định điểm cạnh tiếp theo trên đa giác thân lồi. Các góc được bao giữa điểm xuất phát và tất cả các điểm còn lại. Bằng cách lặp lại, các điểm cạnh tiếp theo có thể được tìm thấy, và việc tìm kiếm sẽ được chấm dứt khi điểm cạnh mới quay trở lại điểm xuất phát. Sau khi tất cả các điểm cạnh được nối, như
thể hiện trong hình 1.30 d, chu vi có thể tính xấp xỉ bằng cách cộng khoảng cách
34
Hình 1. 30 Sơ đồ nguyên lý phương pháp xấp xỉ đa giác lồi
Có nhiều phương pháp để tính kích thước cơ thể, T. Kohlschütter [41] đã đưa
ra đối với các kích thước chiều cao tính bằng công thức khoảng cách giữa hai điểm.
Đối với kích thước vòng, sử dụng công thức chu vi ellip để tính kích thước vòng cổ,
vòng cổ tay, vòng bàn tay. Dùng công thức phân nửa chu vi ellip và hình chữ nhật
để tính kích thước vòngngực. Tuy nhiên những công thức trên cho sai số lớn so với
kích thước thật của cơ thể. Jun-Ming Lu, Mao-Jiun J. Wang (2008) [73] đã đưa ra
phương pháp tính kích thước cơ thể ằ b ng các phương pháp xấp xỉ. Kích thướ thẳngc
có thể dễ dàng thu được bằng cách đơn giản tính toán khoảng cách giữa hai điểm mốc hoặc khoảng cách thẳng đứng giữa một cột mốc và độ dốc. Kích thước đường
cong là chiều dài cung của đường viền của cơ thể con người. Kích thước vòng có
thể được tính bằng phương pháp xấp xỉ đa giác lồi.
Giới thiệu phương pháp xác định kích thước từ dữ liệu quét 3D cơ thể người: a) Bao lồi - Convex Hull 7] [7
Bao lồi của một tập hợp điểm được định nghĩa là một đa giác lồi nhỏ nhất chứa toàn bộ tập điểm này. Bao lồi có một số tính chất dễ dàng nhận ra là: các đỉnh của nó phải thuộc tập điểm đã cho; Với một đường thẳng nối hai điểm bất kì thì đều thuộc đa giác lồi.
- input: Một tập hợp nhiều điểm (>3).
- output: Một đa giác lồi nhỏ nhất chứa tất cả các điểm còn lại.
(computational geometry (convex hull
Tronghình học tính toán ), bao lồi ) của
một tập điểm là tập lồi nhỏ nhất (theo diện tích, thể tích, ...) mà tất cả các điểm đều nằm trong tập đó.
35
Hình 1. 31Sơ đồ bao lồi các điểm nằm trong cùng tập hợp điểm
trên hình 1.31. Giải thích trực quan về bao lồi trên mặt phẳng được thể hiện
Nếu coi các điểm trong một tập hợp là các cái đinh đóng trên một tấm gỗ, bao lồi
của tập điểm đó có viền ngoài tạo bởi sợi dây chun mắc vào các cái đinh sau khi bị kéo căng về các phía.
Thuật toán tìm bao lồi trên mặt phẳng: Bài toán tìm bao lồi của một tập điểm
trên mặt phẳng là một trong những bài toán được nghiên cứu nhiều nhất trong hình
học tính toán và có rất nhiều thuật toán để giải bài toán này. Sau đây là ba thuật toán phổ biến nhất, được giới thiệu theo thứ tự tăng dần về độ khó.
b) Thuật toán bọc gói
(Gift wrapping algorithm Jarvis
Thuật toán bọc gói ) hay còn gọi là thuật toán
marchlà một trong những thuật toán tìm bao lồi đơn giản. Tên thuật toán xuất phát
từ sự tương tự của tên thuật toán với việc đi bộ xung quanh các điểm và cầm theo
một dải băng gói quà.
m có Bước đầu tiên là chọn một điểm chắc chắn nằm trong bao lồi, ví dụ, điể tung độ lớn nhất (nếu có nhiều điểm cùng có tung độ lớn nhất thì có thể chọn điểm tung độ lớn nhất và hoành độ lớn nhất). Xuất phát từ điểm này, mục tiêu sẽ lần lượt
đi đến các điểm khác cho đến khi quay trở lại điểm chọn lúc đầu:
+ Điểm P đang chọn.
+ vector chỉ hướng đang nhìn.
Tiếp theo, thuật toán sẽ lặp lại liên tục các bước sau cho đến khi tìm được bao lồi. Quay mặt theo chiều kim đồng hồ cho đến khi nhìn thấy một điểm, gọi điểm đó là Q cầm theo dải băng và đi đến điểm Q thấy:
+ thành
+ P thành Q.
quay
Thuật toán kết thúc, khi trở về điểm ban đầu. Lúc này đã đi đến tất cả các
đỉnh của bao lồi theo chiều kim đồng hồ. Để xác định điểm nhìn thấy đầu tiên khi quay mặt theo chiều kim đồng hồ, duyệt tất cả các điểm Rtrong tập, ngoại trừ
điểm . Với mỗi điểm,P xét vector
= ;= tạo với v một góc nhỏ nhất sẽ tương ứng với điểm . Để θ Q
tìm θ nhỏ nhất, tìm cos θlớn nhất, tính được cos θbằng công thức . Với mỗi lần tìm điểm tiếp theo, cần duyệt qua tất cả các điểm trong tập, vì vậy
độ phức tạp của mỗi lần tìm điểm là O(n)với là số lượng điểm trong tập. Số lần n
36
điểm đó là , khi đó độ phức tạp của cả thuật toán là h O(nh). Trong trường hợp xấu
nhất,h=n hay tất cả các điểm trong dữ liệu vào tạo thành một đa giác lồi, độ phức
tạp của thuật toán là O(n2), không đủ nhanh khi n>5000.
c) Thuật toán Graham
Đầu tiên, xác định một điểm mà chắc chắn thuộc bao lồi. Thông thường, khi cài đặt người chọn điểm có tung độ nhỏ nhất (nếu có nhiều điểm như vậy thì chọn
điểm trái nhất). Gọi điểm này là điểm O. Chọn hệ trục tọa độ có gốc là điểm vừa
chọn, đổi các tọa độ các điểm còn lại theo hệ trục tọa độ mới (chú ý lúc cài đặt thường không đổi trục tọa độ, nhưng khi tính góc hoặc sắp xếp ở bước tiếp theo cần chú ý tránh nhầm lẫn).
Tiếp theo, sắp xếp các điểm còn lại theo thứ tự tăng dần của góc tạo bởi trục
hoành theo chiều dương và với là một trong các điểm còn lại. I
Xét các điểm theo thứ tự vừa sắp xếp, với mỗi điểm sửa lại bao lồi H. Gọi điểm đầu tiên được cho vào bao lồi H Hlà 1, điểm cuối cùng là Hh(ban đầu h=0).
Khi xét mỗi điểm làm như sau:
P h
1. Thêm điểm vào cuối bao lồi H. Tức là tăng lên 1 và đặt Hh=P.
2. Nếuh<3, xét tiếp điểm tiếp theo, ngược lại làm bước 3.
H
3. Xét 3 điểm h, Hh−1 và Hh−2. Có thể sau khi cho thêm điểm Hh, biết được
điểm Hh−1chắc chắn không nằm trong bao. .
Nếu khi đi theo hướng v rồi đi theo hướng u là đã bẻ góc ngược chiều kim đồng
hồ, hay u ×v >0, thì cả ba điểm đều tạm thuộc bao, và xét tiếp điểm tiếp theo.
Nhưng nếuu ×v <0, thì góc sẽ tạo ra đa giác lõm và
điểm Hh−1phải bị loại bỏ, có nghĩa là Hh−1được đặt là Hh và h giảm đi 1. Sau đó quay lại bước 2 cho đến khi xét hết các điểm, hình 1.32.
Hình 1. 32 Điểm nối bao lồi
Xây dựng bao lồi, đến vị trí h=4. Góc lõm, nên cần bỏ
điểm H3khỏi bao lồi. Sau quá trình trên, đã có một bao lồi H1, H2, ..., Hh sắp xếp ngược chiều kim đồng hồ.
Về độ phức tạp của thuật toán, bước sắp xếp các điểm có độ phức
tạp . Mỗi điểm được cho vào bao nhiều nhất một lần nên tổng độ phức
37
lần nên tổng độ phức tạp của các bước xóa điểm là O(n), do đó độ phức tạp của bước
xét các điểm là O(n). Vậy, độ phức tạp của thuật toán Graham là phù
hợp cho hầu hết các bài toán. d) Thuật toán chuỗi đơn điệu
Thuật toán chuỗi đơn điệu (Monotone chain) vừa dễ cài đặt, vừa là thuật toán
nhanh nhất trong số 3 thuật toán được giới thiệu. Thuật toán dựa trên việc tìm hai
chuỗi đơn điệu của bao lồi: Chuỗi trên và chuỗi dưới. Thấy điểm ở xa về phía bên
phải nhất (từ đây gọi là điểm phải nhất) và điểm ở xa về phía bên trái nhất (từ đây gọi là điểm trái nhất) trong dữ liệu vào luôn là hai đỉnh của bao lồi. Phần bao lồi theo chiều kim đồng hồ tính từ điểm trái nhất và ngược chiều kim đồng hồ tính từ điểm phải nhất gọi là chuỗi trên, phần còn lại của bao lồi gọi là chuỗi dưới, tìm chuỗi trên và chuỗi dưới độc lập với nhau.
Bước đầu tiên là sắp xếp các điểm được cho theo thứ tự tăng dần theo hoành
độ. Nếu hai điểm có cùng hoành độ, điểm có tung độ nhỏ hơn sẽ đứng trước. Xét
chuỗi trên, gọi H là chuỗi trên hiện tại và độ lớn của bao là h. Điểm đầu của chuỗi
là H1 và điểm cuối là Hh. Với mỗi điểm được xét:
1. Thêm điểm này vào H.
2. Nếu h<3, xét tiếp điểm tiếp theo.
3. Gọi Lần này, di chuyển theo chiều kim đồng hồ
để tìm chuỗi trên, kiểm tra xem u ×v có nhỏ hơn 0 hay không. Nếu có, xét tiếp
điểm tiếp theo. Nếu không, loại bỏ Hh−1 và quay lại bước 2.
Sau khi xét hết các điểm, HHsẽ chứa toàn bộ các điểm ở chuỗi trên. Sau đó,
tìm chuỗi dưới bằng cách tương tự, chỉ khác là xét các điểm theo thứ tự ngược lại.
Lưu ý không thêm điểm phải nhất hai lần. Khi thuật toán kết thúc, H sẽ chứa tất cả
các đỉnh của bao lồi, với điểm đầu được lặp lại ở cuối.
Thuật toán này cũng có độ phức tạp O (nlogn). Thuật toán chuỗi đơn điệu
được khuyên dùng ở mọi bài toán tìm bao lồi, do nó đơn giản hơn thuật toán Graham và nhanh hơn một chút.
Áp dụng thuật toán Graham tính kích thước cơ thể.
Phương pháp: Chọn một điểm chắc chắn thuộc bao, dùng một tia quét ngược
chiều kim đồng hồ cho đến khi gặp một điểm khác, được thêm một đỉnh thuộc bao,
lại tiếp tục với điểm vừa tìm được…Quá trình kết thúc khi gặp lại đỉnh đầu tiên. Các bước của thuật toán: Xác định điểm đầu tiên chọn điểm có hoành độ nhỏ nhất hoặc điểm có tung độ là nhỏ nhất. Xác định các điểm tiếp theo: Từ điểm đầu tiên, xác định 1 tia có gốc là điểm đầu tiên và đi qua gốc tọa độ O, quét tia đó ngược theo chiều kim đồng hồ để tìm điểm đầu tiên chạm vào, điểm này là điểm tiếp theo thuộc bao lồi. Tiếp tục thực hiện với điểm vừa tìm được cho tới khi gặp điểm đầu tiên. Nối các điểm vừa tìm theo trật tự xác định được một đa giác lồi bao tất cả các
38
Hình 1. 33 Mô tả các bước trong thuật toán Graham
Khi cắt một mặt cắt vuông góc với trục Z thu được tập hợp các điểm th hi n ể ệ
biên d ng c a vòng cạ ủ ần xác định s ố đo, tập hợp các điểm thu được là các điểm thuộc m t ph ng cặ ẳ ắt và các điểm cách m t ph ng c t m t kho ng ặ ẳ ắ ộ ả = 0,5mm. Sử dụng thuật toán bao lồi để tìm ra biên dạng của tập hợp điểm thu được này, biên
dạng này là một hình đa giác lồi bao tất các các điểm còn lại của tập điểm thu được.
Để xácđịnh được số đo của vòng này cần xác định chu vi của đa giác lồi trên.