Kiểu dữ liệu AME0: Trong AMEF0, các kiểu đữ liệu được đánh dấu bằng 1 byte.. Các kiêu đữ liệu của AME0 được liệt kê ngay sau đây: Kiểu tham chiêu 0x07 Kiéu mang ECMA 0x08 Đánh dấu kết th
Trang 1II
Trang 3
| TRUONG BH KY mmr
VIEN KHOA HQC VA CONG NGHE VIET NAW
VIEN CO HOC VA TIN HOC UNG DUNG
000
DE TAI:
UNG DUNG CONG NGHE THONG TIN TRONG VIEC XAY DUNG
HE THONG LUU TRU VA TRUYEN TAI HiINH ANH PHUC VU CHAN DOAN VA TRA CUU (PACS) TAI BENH VIEN DA KHOA
TINH BINH DUONG
CHUYEN DE 2.11:
THIET KE VA VIET CHUONG TRINH KHAI THAC VA
XU LY ANH DICOM PHUC VU TRONG QUA TRINH HOI CHAN CHO CAC PHONG: MO, HOI TRUONG, PHONG CHAN DOAN HINH ANH VA CAP CUU
NGƯỜI THỰC HIỆN:
Ngô Anh Tuấn
Nguyễn Hữu Phước
Trang 4
ViñBn Cð hữc và Tin hồc Bng đồng Báo cáo đũ tài S5 KH&CN Bình DØfing — Chuyên đã 2.11
THONG TIN CHUNG VE CHUYEN DE
1 Tén chuyén dé: Thiét ké va viét chuong trình khai thác và xử lý ảnh DICOM phục vụ trong quá trình hội chân cho các phòng: Mỏ, Hội trường, Phòng Chân
đoán hình ảnh và cấp cứu
2 Chức năng:
Kết nối giữa các điểm hội chân Quản lý người dùng tham gia hội chân Truyền voice, video giữa các điểm hội chân Chia sẻ nội dung hội chân (thông tin bệnh nhân, ảnh DICOM)
Đo kích thước tổn thương, tính toán Hounsfield Unit (HU) Xem lại Video ca mô
3 Nội dung công việc:
a Phuong 4 án xây dựng chương trình dựa vào các kết quả khảo sát tại Bệnh viện Bình Dương
Xây dựng ứng dụng trên REDS Xây dựng module kết nối giữa các điểm hội chân Xây đựng module quản lý người dùng tham gia hội chân Xây dựng module thảo luận giữa các điểm hội chân Tìm kiếm thông tinh bệnh nhân
Xây dựng module chia sẻ nội dung hội chân Hiện thực chức năng đo kích thước tổn thương, tính toán HU Cài đặt REDS Server
Hiện thực module xem lại Video ca mô
Kiểm tra, chạy thử
Viết báo cáo chuyên đề
Trang 5
ViBin Cl Alc va Tin hiAc Png đồng Báo cáo dil tdi SA KH&CN Bình DBling —- Chuyên đã 2.11
PHAN I1: THIẾT KE CHƯƠNG TRÌNH 5 2 2.1 12121 1111 tre 1
1.1 Phương án xây dựng chương trÌnh: - - ¿+ xxx ng HH he 1
12 Giới thiệu sơ lược về giao thức RTMMP LH * TH HH ng Hy l
1.2.1 Cdc ché 46 hoat dng ctia RTMP? ccccccsccssessesssessesssssesseesesseasecsesseesteaseesesses 2
1.2.2 Quá trình bắt tay: cc co ch nh HH HH 2H ườu 3
1.2.3 Tiêu đề RTMP: c nhe ưeg 3
1.2.4 Truyền tải nhiều đối tượng AMF trên cùng một kết nối: . 4
1.3.1 AMF (Action Message FOrTma†): cà HH HH Hy 6
I Ư ` 'ŠS ‹.d 7
2.1 Xây dựng ứng dụng trên máy chủ REIDS óc Shin re 10
2.2 Module kết nỗi giữa các điểm hội chân 52- 25c Sncttctrrerrrrtrerree 10
2.3 Module quản lý người dùng tham gia hội chân ¿-5- 255cc xszsccxcxee 1]
2.3.2 Tao, tham gia, xóa một buổi hội chân - 5-5 ScSncvererrrtrrrreree 11
2.4 Module thao lun gitta cdc diém hOi ChaI cceccsecscsceeessssesesssesteteeseeveseeteeeees 12
2.4.1 Chat giữa những người sử dụng trong cùng nhóm hội chân: 12
2.5 Module tìm kiếm thông tin bệnh nhân .2.2©22-52ct+2v2Eerxervztrtrrrerrrei 12:
2.6 Module chia sẻ nội dung hội chân - 52 22x22 E212 14
2.6.1 Thông tin bệnh nhân và danh sách ảnh dùng trong cuộc hội chẩn 15
2.6.2 Số thứ tự, tọa độ, kích thước ảnh đang sử dụng - s55 15 2.7 Chức năng đo kích thước tôn thương, tính toán HU - - :55c++c+ssc2 17
2.7.1 Ðo kích thước tổn thương ccccccvtiiieeriirtrrirrriierrrrie 17 2.7.2 _ Tính toán HU ốA 18 2.8 Cài đặt REID5 S€TV€F - HT nT TH TH ng ko 19
2.9 _ Hiện thực module xem lại Video ca mỖ St St text rrererrre 21
Trang 6
Vin Cal hồic và Tin hic Bing dling Bao cdo di tai SA KH&CN Binh Dil@ing — Chuyén di 2.11
PHAN 1: THIET KE CHUONG TRINH
1.1 Phương án xây dựng chương trình:
Chương trình hội chân hoạt động dựa trên mô hình Client- Server, hoạt động dựa trên giao thức RTMP(Real Time Messaging Protocol) cho việc truyền dỡ liệu voIce,
video, gọi hàm tìm kiếm, nhận kết quá, chia sẻ nội dung hội chan v và giao thức HTTP
cho việc lấy ảnh từ máy chủ
Hinh 1: Sơ đồ các module chương trình 1.2 Giới thiệu sơ lược về giao thức RTMP
Mạng Internet vốn được xây dựng để truyền dữ liệu, và các giao thức truyền tải lớp Transport nhu TCP (Transmission Control Protocol) hay UDP (User Datagram
Protocol) chi co kha nang truyén dữ liệu từ đầu cuối đến đầu cuối mà không có bắt kì
cơ chế nào để đảm bảo gói dữ liệu được truyền đến đích trong một thời gian xác định
nghĩa là không đảm bảo vấn đề thời gian thực cho âm thanh, hình ảnh Khi truyền một
gói dữ liệu trên mạng Internet có nhiều nguyên nhân khiến gói đữ liệu đến đích không
đúng thời gian (có thé đến sớm hoặc đến trễ) chắng hạn như lưu lượng trên mạng tại
thời điểm gửi quá lớn, cũng có thể gói dữ liệu phải đi qua một link có tốc độ thấp, một
hoặc vài router bị qua tai khiến cho gói dữ liệu đến trễ không theo một quy luật nao
(jitter) Ngoai ra con van dé mat gói dữ liệu khi Time-to-Live trong gói dữ liệu bị giảm
xuống 0, các router drop cac gói đữ liệu khi bị quá tải .Tất cả các nguyên nhân trên
khiến cho mạng Internet không thật thích hợp để truyền âm thanh, hình ảnh Tuy
Trang 7Villn CA hflc va Tin hic Ping dling Báo cáo đồi tài SA KH&CN Bình DPlầng - Chuyên đÐØ 2.11
nhiên, người ta sử dụng cơ ché “Buffering” (ving dém Playback) ở phía nhận để giảm
jitter khi truyền âm thanh, hình ảnh trên mạng Internet Cơ chế này như sau:
Dữ liệu được đưa vào Dữ liệu được lấy ra với với tốc độ biến đồi tốc độ cố định
Hình 2: Vùng đệm dùng cho việc playback
Bên nhận khi nhận được dữ liệu thì không phát ra ngay mà lựu vào vùng đệm K Khi vùng đệm K đây thì bên nhận bắt đầu phát hình ảnh và âm thanh (lấy dữ liệu ra khỏi vùng đệm K với một tốc độ không đổi) Trong lúc phát âm thanh, hình ảnh thì nó
tiếp tục nhận đữ liệu âm thanh, hình ảnh từ bên gửi bù đắp vào đữ liệu được lấy ra
khỏi vùng đệm K để phát Nếu chỉ có trì hoãn nhỏ xảy ra thì vùng đệm K sẽ không bị
cạn kiệt và đảm bảo triệt tiêu jitter, nếu có trì hoãn lớn hoặc mắt dữ liệu thì tới một lúc
nào đó vùng đệm K sẽ bị cạn kiệt, khi đó bên nhận sẽ dừng phát âm thanh, hình ảnh và
phải tiễn hành thao tác trên lại từ đầu Có một vài điểm đáng lưu ý khi chọn kích thước
của vùng đệm K Nếu chọn K lớn thì có thể giảm đáng ké jitter nhung thoi gian cho
đợi trước khi bắt đầu phát âm thanh, hình ảnh sẽ rất lâu Ngược lai néu chọn K nhỏ thì
thì thời gian chờ đợi trước khi bắt đầu phát âm thanh, hình ảnh sẽ ngắn nhưng trong quá trình phát thường hay dừng để đệm lại dữ liệu
RTIMP là giao thức được tạo ra bởi Macromedia (hiện nay là Adobe) dùng để truyền tải các đối tượng Flash và video trên các kết nối mạng Hiện tại chỉ có 2 máy chủ hỗ trợ giao thức này là Macromedia Media Sever, và server mã nguồn mở Red5
Đây là một giao thức đơn giản, được tối ưu cho các kết nối tốc độ thấp Nó có thể
hỗ trợ tối đa 64 luồng dữ liệu trên cùng một kết nối Trong header của một AMF có chứa chỉ số của luồng dữ liệu mà nó thuộc về Một message RTMP có thể chứa nhiều hơn một đối tượng AME
Trang 8
ViBn Cñ hữc và Tin hic ng đồng Báo cóo đồi tài SE KH&CN Bình DElầng ~ Chuyên đã 2.11
_1⁄2.2 Quá trình bắt tay:
Hoạt động cơ bản của RTMP như sau : Tất cả quá trình truyền thông được khởi
động bởi client Client khởi tạo một kết nỗi RTMP bằng cách gửi một byte có giá trị
0x03 — byte này được theo sau bởi một khối dữ liệu 1536 byte Định dạng của khối dữ
liệu này cho đến nay vẫn chưa biết nhưng nó dường như không thực sự được sử dụng
bởi giao thức ngoại trừ thao tác bắt tay
Server khi nhận được gói đữ liệu sẽ lưu lại khối đữ liệu 1536 byte này, và cũng gởi
1 byte giá trị 0x03 theo sau bởi hai khối 1536 byte Khối thứ hai chính là nội dung đã
được gửi lên bởi client trước đó
Client nhận hai khối dữ liệu 1536 byte từ server, so sánh với khối đữ liệu ban đầu
nó gửi lên server, nếu phù hợp thì kết nối được thiết lập, nó cũng gửi trả khối dữ liệu
nay vé lai cho server
sàng cho quá trình truyền thông Đối tượng AME thứ hai chính là đối tượng
NetConnection từ client, lớp Action Script này được sử dụng tạo kết nối tới media
server Đối tượng AMEF thứ ba là đối tượng NetStream từ client dùng để xác định file
cần stream từ server
1.2.3 Tiêu đề RTMP:
RTMP có bốn loại tiêu đề đó là tiêu đề 12, 8, 4 hoặc 1 byte Byte đầu tiên của tiêu
dé rất quan trong, 2 bit đầu tiên của nó xác định kích thước của tiêu đề
Trang 9
Header Type ( 2 bits }
Hình 6: Tiêu đề RTMP 12 byte
Đối với tiêu đề 12 byte thì 3 byte tiếp theo là trường timestamp (little-endian), 3
byte tiếp theo nữa là chiêu dài của đối tượng AME (big- endian), byte ké tiép quy dinh
nội dung của đối tượng AME (xem hình 7), 4 byte cuôi cùng xác định source id
Đối với tiêu đề 8 byte thì bỏ đi trudng source id trong tiêu đề 12 byte
Đối với tiêu đề 4 byte thì bỏ di trường length, content type trong tiêu dé 8 byte
Đối với tiêu đề 1 byte thì bỏ đi trường timestamp trong tiêu dé 4 byte nghia là nó
chỉ gồm byte đầu tiên chứa kiểu tiêu đề và chỉ số đối tượng AMF
byte, các khối tiếp theo thường được gẵn tiệu dé 1 byte, trong bat kì loại tiêu dé nao
cũng có chứa chỉ số của đối tượng AMF tương ứng
Trang 10
Viln CP) llc va Tin hic Bing dling
Hình 8: Các khối dữ liệu của một đối tượng AMF có chỉ số là 0x03
Để có thể truyền nhiều đối tượng AMEF trên một kết nối đơn người ta không truyền
các khôi đữ liệu của một đôi tượng AME liên tiêp nhau mà truyền xen kẽ các khôi dữ
74
63
oo 2e
65
c4
69 Lần
A
A K]
64 65 73°77
70 3a 2f 73
66 65
Truyên các khôi dữ liệu xen kế nhau
ki
73 6f
66
vA i
61 t2
Báo cáo đổi tài %3 KH&CN Bình DBBng - Chuyên đã 2.11
20
20
65 0s
31
70
at
2
Trang 11
Viln Ca hllc va Tin hc ng đồng Báo cdo dil tdi S@l KH&CN Binh Ding — Chuyén d@ 2.11
1.3 Chuẩn mã hoá dữ liệu:
1.3.1 AMF (Action Message Format):
AME là một định dạng dùng chỉ ghép nối tiếp các dữ liệu được dùng dé giao tiép thông qua môi trường mạng AMF giúp mã hoá và định nghĩa các kiểu đữ liệu cần
tương tác giữa hai hệ thống Thông qua AME, các hệ thống đầu cuối sẽ hiểu được dữ
liệu được chuyền từ hệ thống khác là kiểu dữ liệu gi AMF duoc giới thiệu đầu tiền
2001 trong Flash Player 6 là AMEF0 Sau này được phát triển thêm thành AME 3 trong
Flash Player 9 Tuy nhiên AMF0 vẫn còn được hỗ trợ dé tương thích lùi
1.3.2 AMFO:
Giới thiệu:
Như đã giới thiệu ở trén AMFO là phiên bản đầu tiên của AMF giúp phép nối các đối tượng đữ liệu, chứa thông tin về kiểu của của dữ liệu AME0 cũng hỗ trợ truyền
các kiểu đữ liệu phức tạp bằng cách dùng tham chiếu để tránh dư thừa dữ liệu
Kiểu dữ liệu AME0:
Trong AMEF0, các kiểu đữ liệu được đánh dấu bằng 1 byte Theo sau đó là dữ liệu theo đúng những gì đã được mô tả ở byte đánh dấu phía trước
Các kiêu đữ liệu của AME0 được liệt kê ngay sau đây:
Kiểu tham chiêu 0x07
Kiéu mang ECMA 0x08 Đánh dấu kết thúc đôi tượng | 0x09
Hình 10: Kiểu đữ liệu trong AMF0
se Kiểu số được dùng để mã hoá một số ActionScript Dữ liệu theo sau một
marker luôn luôn là 8 byte số dấu chấm động double IEEE-754
Kiểu số = đánh dấu DOUBLE e© Kiểu logic được dùng để mã hoá kiểu nguyên thuỷ logic của ActionScript Một ˆ_ byte đánh dấu là kiểu logic, theo sau đó là một byte chỉ giá trị của dữ liệu logic
Giá trị này bằng 0 là false, bằng 1 là true
Kiểu logic = đánh dấu U8 (số nguyên không dau 8 bit)
Trang 12
Vilin Cal hflic va Tin hic Ang ding Báo cdo da tai S3 KH&CN Bình DBlng - Chuyên đã 2.11
© Kiểu chuỗi được dùng để mã hoá bất kì một chuỗi nào có độ dài nhỏ hơn 65525
kí tự Nếu chuỗi nào dài hơn độ dài này thì sẽ chuỗi kiểu chuỗi dài
Kiểu chuỗi = đánh dấu UTF-8 e© Kiểu đối tượng được dùng để mã hoá kiểu object của ActionScript Kiểu này
tương đối "phức tạp được ghép nỗi như sau:
Kiểu đối tượng = đánh dấu (UTF-8 giá tr)(UTF-8 gia_Tri) (UTF-8 gia Tri) UTF-8 _ Tống đánh dấu kết thúc
© Kiểu null chỉ được biểu diễn bằng byte đánh dấu kiểu, và không có thông tin
Kiểu null = đánh dấu
° Kiểu tham chiếu được dùng để chỉ lại dối tượng đã mã hoá phía trước mà không
cần phải truyền lại, tránh dư thừa dữ liệu Kiểu đữ liệu tham chiếu sử dụng số nguyên 16 bit đề dùng như một chỉ mục và bắt đầu bằng 0
Kiểu tham chiếu = đánh dấu U16 e_ Kiểu mảng ECMA được xem như là một kiểu phức tạp của AMEF0 Kiểu này có thể được sử dụng kèm với kiểu tham chiếu cho đữ liệu của nó Sau byte đánh
dấu là một byte chỉ kích thước của mảng, và tiếp theo sau đó là dữ liệu của
Kiểu mảng ECMA = đánh dấu U32 U32*(UTF-8 gia tri) UTF-8_réng
e_ Kiểu mảng dày chứa dữ liệu cần truyền đi
Kiểu mảng dày = dánh dấu U32 U32*giá trí e©_ Kiểu chuỗi dài được sử dụng trong AMF0 để mã hoá một chuỗi chiếm chiều dài nhiều 65535
Kiểu chuỗi dài = đánh dấu UTF-8_ dai
e Kiểu ngày tháng được dùng để mã hoá số lượng ms đã qua để từ ngày | thang 1
năm 1970 giờ UTC Múi giớ = S16 (số nguyên có dấu 16 bit)
e Kiểu XML cũng được hỗ trợ trong AMF0 khi dùng để ghép nối dữ liệu trong chuỗi XML AME0 coi Kiểu XML giống như những kiẻu chuỗi dài khác
e©_ Kiểu lớp là kiểu được dùng để phép nối các dữ liệu trong một lớp lại thành một chuỗi gửi đi Kiểu lớp cũng có thể được sử dụng kèm với kiểu tham chiếu
Kiểu dữ liệu AME3:
Trang 13
Vilin CB hlic va Tin hic Bing d@ing Báo cáo đồ tài Si KH&CN Bình DØÐBng ~ Chuyên di 2.11
Trong AMEF3, mỗi kiểu đữ liệu cũng được bắt đầu bằng một byte chiều dài, tiếp
theo là dữ liệu tương ứng với dữ liệu được mô tả ở byte đánh dâu Giá trị của byte
đánh dâu có ý nghĩa như sau:
Kiéu logic true 0x03
Kiểu số nguyên 0x04 Kiểu sé double 0x05
Kiéu chudi - 0x06
Kiéu van ban XML | 0x07
Kiéu ngay thang 0x08
Hình 11: Kiểu dữ liệu của AMF3
e Kiéu undefined chỉ được biểu diễn bằng byte đánh dấu không có dữ liệu đi kèm
theo sau
Kiểu \ undefined = đánh dấu
e Kiểu null cũng giống như Kiểu undefñned chỉ được biểu diễn bằng byte đánh dẫu và không có dữ liệu đi kèm theo sau
Kiểu null = đánh đấu
e© Kiểu logic false, Kiểu logic true được dùng để thay thế cho Kiểu logic ở AME0, cái giá trị logic được biểu diễn kèm theo byte đánh dấu
Kiểu logic false = đánh dấu logic false
Kiểu logic true = đánh dấu logic true e_ Kiểu số nguyên được dùng để mã hoá số nguyên không dấu 29 bit theo cú pháp ABNF (Augmented Backus-Naur Form)
Kiểu số nguyên = đánh _ dấu U29
se Kiểu double được dùng để mã hoá một số, Kiểu này cũng được dùng thay cho Kiểu số nguyên nếu số có giá trị lớn hơn 2? Kiểu này bao gồm một số đấu chấm động [EEE-754 theo sau một byte đánh dấu
Kiểu double = đánh dấu DOUBLE
e Kiểu chuỗi được dùng để biểu diễn một chuỗi trong AMEF3 và dùng tương
đương như chuỗi dai trong AMFO
Kiểu chuỗi = đánh dấu UTF-§-vr
e Kiểu văn bản XML được dùng để mã hoá Kiểu XMLDocument trong
ActionScript Chiều đài của một văn bản XML được giới hạn trong 256MB
Kiểu văn bản XML= đánh dấuUTF-§ -
Trang 14
ViBn Cũ hữc và Tin hữc Png dầng Bdo cdo dil tai SA KH&CN Binh Dialing — Chuyên đãi 2.11
e Kiểu ngày tháng có ý nghĩa giống như trong AMEO0
Kiểu ngày - tháng = đánh _ dau (U29_1|U29_2 DOUBLE)
U29_1 cé bit dau tiên là 0 chỉ kiêu ngày tháng tham chiếu, U29 _2 có bit đâu tiên là 1 tiếp theo sau là một DOUBLE chỉ số lượng ms từ ngày l
tháng 1 năm 1970 tới thời điểm hiện tại tính theo giờ UTC
e Kiểu mảng được sử dụng thay cho kiểu ECMA, máng dày đặc của AME0
_ Kiểu mảng = đánh dấu (U29 1 | U29 2 (Kiểu ECMA_ | Kiểu máng dày))
e Kiểu đối tượng được dùng để chất lượng đối với các kiểu Object của ActionScript và kiểu lớp của người đùng
Kiểu mảng = đánh dấu (kiểu đối tượng | kiểu lớp) e©_ Kiểu XML được dùng để mã hoá đối tượng XML của ActionScript có hỗ trợ cú pháp E4X Nội dung của kiểu này được xử lý giống như một UTF-8
e© Kiéu mang byte 1a mét kiéu mdi dugc hé tro trong AMF3 so voi AMFO Kiéu này cũng tượng tự như kiểu mảng của AME3 nhưng các phần tử của nó là các byte
Kiểu mảng byte= đánh đấu (U29 1|U29_2 n*(U8))