Thực hiện lọc nhiễu đốm cho ảnh siêu âm trên FPGA
Bạn đang xem tài liệu "Thực hiện lọc nhiễu đốm cho ảnh siêu âm trên FPGA", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
thuc_hien_loc_nhieu_dom_cho_anh_sieu_am_tren_fpga.pdf
Nội dung text: Thực hiện lọc nhiễu đốm cho ảnh siêu âm trên FPGA
- Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh THỰC HIỆN LỌC NHIỄU ĐỐM CHO ẢNH SIÊU ÂM TRÊN FPGA TÓM TẮT Trong lĩnh vực y khoa siêu âm hiện nay là một phương pháp phổ biến trong chẩn đoán nhiều bộ phận khác nhau trên cơ thể con người như: siêu âm tim, thận, gan, thai nhi, và hình ảnh siêu âm cũng mang lại những thuận lợi cho người được siêu âm bởi ít bị ảnh hưởng đến sức khỏe con người. Tuy nhiên, những hình ảnh siêu âm thường bị ảnh hưởng rất nhiều nhiễu, đặc biệt là nhiễu đốm, điều đó đã gây khó khăn trong việc chẩn đoán kết quả của bác sĩ, và làm giảm ảnh hưởng đến chất lượng ảnh siêu âm. Bài báo này mô tả phương pháp lọc nhiễu đốm cho ảnh siêu âm trên FPGA. Việc thực hiện trên lọc nhiễu đốm cho ảnh siêu âm trên FPGA, bước đầu được tiến hành trên ảnh siêu âm tĩnh, ảnh siêu âm đen trắng và có kích thước 192x192. Các ảnh siêu âm được tiến hành lọc trên hai bộ lọc Median và Modofied hybrid median, đồng thời so sánh các kết quả thu được. Các kết quả đạt được cũng như các so sánh cũng được mô tả chi tiết trong bài báo. ABSTRACT In the field of medical ultrasound is now a common method for diagnosing many different parts of the human body , such as echocardiography , kidney , liver , fetal ultrasound images and also bring advantages to ultrasound by less affected human health . However, the ultrasound images are usually affected very much noise , especially noise spots , which have caused difficulties in the diagnosis of doctors results , and reduces the impact on the quality of ultrasound images . This paper describes noise filtering method for ultrasound imaging spots on FPGA . The implementation of a noise on the ultrasound image spots on FPGA , the first step is carried out on static ultrasound images , black and white ultrasound image of size 192x192 . The ultrasound imaging was conducted on two filter Median filter and hybrid Modofied median , and compare the results obtained . The results as well as comparisons are described in detail in the article. I. GIỚI THIỆU Siêu âm đang được sử dụng phổ biến trong các bệnh viện để chẩn đoán các cơ quan khác nhau trong cơ thể người như: tim, thận, tuyến tiền liệt, gan, buồng trứng, tử cung, tuyến giáp, thai nhi, Phương pháp siêu âm đã mang lại những kết quả nhất định trong lĩnh vực y khoa. Tuy nhiên, một trong những hạn chế của nó là sự tương phản thấp, hình ảnh nhiễu cao ảnh hưởng đến kết quả. Nhiễu thường gặp trong ảnh siêu âm là nhiễu đốm, nhiễu đốm đã che lấp một phần hoặc toàn phần các chi tiết trong hình ảnh siêu âm. Từ đó, có thể gây chuẩn đoán nhầm và dẫn đến kết luận sai. Do đó lọc nhiễu đốm là một điều kiện tiên quyết trong siêu âm. Hiện nay xử lý ảnh là một kỹ thuật đang được ứng dụng rất phổ biến, bằng nhiều kỹ thuật khác nhau. Với sự tiến bộ không ngừng của nền khoa học kỹ thuật trong và ngoài nước, lĩnh vực xử lý ảnh ngoài việc tạo ra một bức ảnh đẹp, sắc nét, đáp ứng thẩm mỹ của con người, mà còn có ý nghĩa trong lĩnh vực y khoa vì xử lý ảnh có thể tạo ra những hình ảnh trung thực, rõ nét, giúp đội ngũ y bác sĩ có thể chẩn đoán chính xác cho bệnh nhân, giảm sai sót đáng tiếc có thể xảy ra. Bài báo: Thực hiện lọc nhiễu đốm cho ảnh siêu âm trên FPGA, với mong muốn loại bỏ được nhiễu cao, bảo quản cạnh hình ảnh tốt, chỉ số kết cấu hình ảnh giống với ảnh gốc, tạo ra kết quả tốt cho ảnh siêu âm, có thể so sánh nhiều bộ lọc với nhau ngay trên cùng thời điểm nhằm chọn kết quả tốt nhất, giảm sai sót trong kết quả siêu âm một cách thấp nhất. Từ đó, có thể mở ra một hướng mới cho phương pháp lọc ảnh trong siêu âm. Trong bài báo này trình bày phương pháp lọc nhiễu đốm trên FPGA với hai bộ lọc Median và Modified hybrid median: đi từ thiết kế phần cứng, thiết kế bộ lọc, tính toán, lập trình, nạp xuống kit DE 2 bằng cổng USB Blaster_ port và xuất ảnh lên màn hình thông qua cổng VGA. Mô hình nhiễu đốm như sau: X n = X g . ŋ + α (1.1) Trong đó ŋ và α là nhiễu nhân và nhiễu cộng. Trong thực tế nhiễu cộng nhỏ hơn nhiều so với nhiễu nhân nên ta có thể viết : X = X . ŋ (1.2) 1
- Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh Hình 1: Ảnh siêu âm bị nhiễu đốm II. THIẾT KẾ PHẦN CỨNG 1.Thiết kế khối xử lý ảnh Image Process PLL Control Anh Goc SRAM Data Addr Data Addr Display Select Data Addr Data Addr Filter_Ctr Display_Ctr Vga_drv Hình 2: Sơ đồ khối xử lý ảnh PLL cung cấp các clock đa dụng cũng như cung cấp các chức năng như: + Nhân và chia clock. + Tạo ra 3 clock nội khác nhau. + Tạo ra 1 clock ngoại. Ảnh gốc sẽ được lưu trong RAM nội của FPGA Ảnh được xử lý bởi “Filtter_Ctr” Ảnh sau xử lý sẽ được lưu trong SRAM Display_Ctr tính toán địa chỉ để lấy ảnh gốc và ảnh đã xử lý để hiển thị lên VGA. Vì cả RAM và SRAM đều được dùng trong quá trình xử lý và hiển thị. Nên ta cần tín hiệu Display_Select để điều khiển luồng của bus dữ liệu VGA_Ctr để đồng bộ dữ liệu giữa khối Display_Ctr với chip VGA (Điều khiển các tín hiệu xuất ra VGA chip) 2.Tính toán địa chỉ trong RAM và SRAM Với mỗi giá trị (h_count, v_count) được đưa ra bởi khối PixcelCount. Ta sẽ tính toán ra các giá trị của địa chỉ của các điểm ảnh xung quanh. (h_count -1, v_count -1) (h_count +1, v_count) (h_count , v_count -1) (h_count -1, v_count +1) (h_count +1, v_count -1) (h_count, v_count +1) (h_count -1, v_count ) (h_count +1, v_count -1) (h_count, v_count) Trong bài báo này tác giả sẽ hiển thị ảnh 24bit màu với kích thước 192*192. Do đó kích thước tối thiểu mà hệ thống cần để chứa dữ liệu hình ảnh hiển thị lên màn ảnh là: 24*192*192 = 884736bit = 110592 byte (2.1) Bộ nhớ trên còn có một yêu cầu là trong 1 xung clock phải đưa đủ 24 bit cấp cho VGA. Để làm được như vậy ta cần phải sử dụng đồng thời 2 bộ nhớ. Bộ nhớ có sẵn trong FPGA: M4K:Kích thước 40.000 * 8bit data_out. Bộ nhớ này được dùng để chứa ảnh gốc. Và SRAM chip trên kit DE2: Kích thước 512 KByte = 256K * 16bit data. Được dùng để lưu ảnh sau khi lọc. Cả hai bộ nhớ này được cung cấp cùng địa chỉ bởi VGA. Data_out tổng cộng 16+8 là 24 bit. 2
- Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh Cách tính địa chỉ cho VGA_addr: VGA_ADDR = (b – ( V_count – y))*a + (H_count – x) (2.2) Trong đó: H_count: Biến đếm theo phương ngang. 0 ≤ H_count ≤ 640 + 160. Với 640 là kích thước theo phương ngang của toàn màn hình. Và 160 là độ trễ cần thiết để tín hiệu sóng quét ngang có thể trở về vị trí đầu hàng mới. V_count: Biến theo phương dọc. 0 ≤ V_count ≤ 480 + 45. Với 480 là kích thước theo chiều dọc của toàn màn hình. Và 45 là độ trễ cần thiết để tín hiệu sóng quét ngang quay về vị trí ban đầu. a: Kích thước ngang của ảnh. b: Kích thước dọc của ảnh x, y: tọa độ của ảnh được hiển thị Trong bài báo này các thông số trên là: a = b = 192; x = 100; y = 100; Do đó ta có công thức sau: VGA_addr = (192 - (v_count - 100))*192 + (h_count- 100) (2.3) Vì ta chỉ cho hiển thị hình ảnh 192*192, một phần của màn hình 640*480. Nên ta cần tạo ra tín hiệu khi nào nhận dữ liệu từ các bộ đệm và khi nào không nhận tín hiệu từ bộ đệm. if(h_count>=100 & h_count = 100 & v_count =1318 & h_count =493) VS<=0; else VS<=1; Để giao tiếp với SRAM chúng ta phải hiểu biết được các port tín hiệu, và cách thức lập trình điều khiển các port này để phù hợp với giao thức giao tiếp của SRAM. Các tín hiệu cần thiết để giao tiếp với SRAM: SRAM_ADDR 17−0 – 18-bits, input. SRAM_CE_N 1-bit, input. SRAM_WE_N 1-bit, input. SRAM_OE_N 1-bit, input. SRAM_UB_N 1-bit, input. SRAM_LB_N 1-bit, input. SRAM_DQ 16-bits, in_output Hình dưới đây mô tả dạng sóng của tín các tín hiệu trong quá trình đọc và ghi SRAM: Hình 3: Dạng sóng giao tiếp với SRAM Để giao tiếp với SRAM ta phải tạo thêm các port PIO dưới đây: output PIO : SRAM_ADDR [17:0] inout PIO : SRAM_DQ [15:0] 3
- Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh output PIO : SRAM_WE_N 1 bit Các tín hiệu còn lại sẽ cho tích cực, tức là được gán mức 0. Cần chú ý một điều khi khởi tạo PIO SRAM_DQ để giao tiếp với SRAM_DQ của SRAM, ta khởi tạo là in_out port. Nhưng hệ thống thu được bao gồm một port in và một port out. Trước khi thực hiện giao tiếp với SRAM tác giả phải sử dụng lệnh: IOWR(DISPLAY_BASE,0,0) Để đưa tín hiệu DISPLAY lên 0 Đọc Ghi DISPLAY = 0 DISPLAY = 0 SRAM_WE_N = 1 SRAM_WE_N = 1 SRAM_ADDR = addr SRAM_ADDR = addr SRAM_DQ = data Chờ vài xung clock SRAM_WE_N = 0 Đọc dữ liệu từ PIO SRAM_DQ Chờ vài xung clock Ret SRAM_WE_N = 1 Ret (a) (b) Hình 4: Lưu đồ đọc (a) và ghi (b) SRAM Dùng DE2 Control panel tác giả load dữ liệu sau khi truyền dữ liệu từ SRAM lên PC để đối chiếu với dữ liệu gốc. Hình 5: Dữ liệu ảnh gốc 4
- Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh Hình 6: Dữ liệu lấy từ SRAM 3.Thiết kế bộ lọc Thiết kế bộ lọc ma trận ảnh bằng Verilog, sau đó với mô phỏng Simulation kiểm tra bộ lọc vừa tạo được bằng cách ta cho một số dữ liệu đầu vào của bộ lọc sau đó cho chạy mô phỏng kiểm tra kết quả bằng tính toán cụ thể với kết quả thu được từ mô phỏng để kiểm nghiệm lại bộ lọc có thực hiện đúng giải thuật hay không. Với giải thuật bộ lọc: - MR= {các pixels R, C} - MXD= {các pixels D, C} - M= {MR, MXD, C} Ta cho các giá trị cụ thể như : D1 có giá trị : 07, D2 (0A), D3 (08), D4 0C), D5 (0A), D6 (06), D7 (0B), D8 (09), R1 (06), R2 (0B), R3 (09), R4 (0D), R5 (04), R6 (0D), R7 (07), R8 (08), C (0A). Ta tính toán kết quả được MR = 08, MXD= 0D, M = {MR, MXD, C} = 0A. So sánh với kết quả từ mô phỏng như trong hình tác giả thấy kết quả giống nhau. Ta có thể tiến hành kiểm tra thêm một vài giá trị khác, từ đó ta thấy giải thuật viết là đúng. Hình 7: Dạng sóng mô tả bộ lọc Modified hybrid median Với mô phỏng kiểm tra trên hình 7 cho thấy sau khoảng 4 clock thì pixel trung tâm được xử lý xong. Với ảnh 192*192 ta có 36864 pixels, sẽ mất 147456 clock. Vậy mất khoảng 3ms để xử lý xong ảnh. III. KẾT QUẢ VÀ THẢO LUẬN 1. Hiển thị ảnh gốc lên màn hình thông qua cổng VGA của kit DE2: Việc giao tiếp đọc, ghi SRAM có thể dùng chương trình của Altera thực hiện và xuất ảnh từ SRAM ra VGA. 5
- Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh Với ảnh 24 bit màu thì phần dữ liệu bắt đầu từ địa chỉ 0x36. Để tách phần dữ liệu này ra tác giả sử dụng chương trình Note_pad++ để cắt phần header bắt đầu từ địa chỉ 0x00 0x35. Và lưu lại file này với đuôi *.BIN: Lưu ý để xem file ở dạng binary ta phải add thêm hex_editor plugin cho Note_pad++. Dưới đây là các hướng dẫn cắt header: Chuẩn bị file ảnh có kích thước 192*192* 24bit Right_click vào file ảnh và chọn edit with note_pad++. (a) (b) Hình 8: Ảnh gốc được xuất ra từ cổng VGA của kit DE2 lên màn hình CRT Từ hình 8 cho thấy đã xuất được ảnh lên màn hình CRT thông qua cổng VGA của kit DE2 với hai kích thước khác nhau: 192x192 (Hình 8a) và 640x480 (Hình 8b). 2. Lọc ảnh và xuất lên màn hình thông qua cổng VGA của kit DE2: SRAM được chia thành bốn vùng riêng biệt kết hợp với các switch (SW) trên kit DE2: vùng thứ nhất lưu ảnh lọc sử dụng bộ lọc Median (SW ở vị trí 00), vùng thứ hai lưu ảnh lọc sử dụng bộ lọc Modified hybrid median hình “chữ X” (SW ở vị trí 10) và vùng thứ ba lưu ảnh lọc sử dụng bộ lọc Modified hybrid median hình “chữ +” (SW ở vị trí 01). Hình 9b ảnh lọc sử dụng bộ lọc Median ta thấy nhiễu đốm vẫn còn xuất hiện ở một vài điểm ảnh, do bộ lọc khi thực hiện chỉ quét tìm pixel trung tâm còn các pixel xung quanh rất dễ bị bỏ sót; khả năng bảo quản cạnh đối với trường hợp này cũng thấp, biên không rõ ràng. Do thông số của bộ lọc được lấy trung bình giữa các pixel ảnh theo: filter_matrix[0] <= 8'h01; filter_matrix[1] <= 8'h01; filter_matrix[2] <= 8'h01; filter_matrix[3] <= 8'h01; filter_matrix[4] <= 8'h01; filter_matrix[5] <= 8'h01; filter_matrix[6] <= 8'h01; filter_matrix[7] <= 8'h01; filter_matrix[8] <= 8'h01; div_var <= 9; Hình 9: Ảnh gốc (a) và ảnh sau lọc bằng bộ lọc Median (b); các mũi tên chỉ các điểm nhiễu đốm Để khắc phục tình trạng này ta tiến hành lọc với bộ lọc Modified hybrid median (Hình 10). Hình 10c và hình 10d là ảnh lọc sử dụng bộ lọc Modified hybrid median ta thấy nhiễu đốm đã được loại bỏ, do bộ lọc khi thực hiện quét theo hình chữ X hoặc chữ thập nên khả năng tìm nhiễu chính xác hơn; khả năng bảo quản cạnh đối với trường hợp này cũng tốt hơn, các đường biên của chi tiết ảnh rõ ràng hơn. Do thông số của bộ lọc được lấy đối xứng của ma trận ảnh theo: filter_matrix[0] <= 8'h01; 6
- Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh filter_matrix[1] <= 8'h00; filter_matrix[2] <= 8'h01; filter_matrix[3] <= 8'h00; filter_matrix[4] <= 8'h01; filter_matrix[5] <= 8'h00; filter_matrix[6] <= 8'h01; filter_matrix[7] <= 8'h00; filter_matrix[8] <= 8'h01; div_var <= 5; Hoặc: filter_matrix[0] <= 8'h00; filter_matrix[1] <= 8'h01; filter_matrix[2] <= 8'h00; filter_matrix[3] <= 8'h01; filter_matrix[4] <= 8'h01; filter_matrix[5] <= 8'h01; filter_matrix[6] <= 8'h00; filter_matrix[7] <= 8'h01; filter_matrix[8] <= 8'h00; div_var <= 5; (a) (b) (c) (d) Hình 10: Ảnh siêu âm thai nhi: ảnh gốc (a) và ảnh sau lọc bằng bộ lọc bằng Median (b), bộ lọc Modified hybrid median hình “chữ X” (c) và bộ lọc Modified hybrid median hình “chữ +” (d) (a) (b) (c) (d) Hình 11: Ảnh siêu âm sỏi túi mật: ảnh gốc (a) và ảnh sau lọc bằng bộ lọc bằng Median (b), bộ lọc Modified hybrid median hình “chữ X” (c) và bộ lọc Modified hybrid median hình “chữ +” (d) Qua quá trình thực hiện lọc nhiễu đốm cho ảnh siêu âm trên FPGA tác giả nhận thấy rằng kết quả thu được khá tốt, đáp ứng được việc chúng ta có thể thay đổi các thông số bộ lọc một cách linh hoạt: các thông số trên bộ lọc có thể thay đổi tùy ý, nhưng cũng trong phạm vi thông số từng bộ 7
- Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh lọc và tùy vào yêu cầu của người dùng, chương trình ứng dụng thời gian thực (realtime) có thể ứng dụng được trong thực tế. IV. KẾT LUẬN Bài báo này tác giả tiến hành thực hiện lọc nhiễu đốm cho ảnh siêu âm trên FPGA sử dụng hai bộ lọc Median và Modified hybrid median: sử dụng phần mềm Quartus II để lập trình Verilog HDL, đồng thời truyền ảnh xuống kit DE2 của Altera qua cổng USB Blaster_ port. Hiển thị kết quả lên màn hình cả ảnh gốc và ảnh sau khi lọc trên cùng màn hình cùng thời điểm. Bài báo đã đạt được một số kết quả như sau: Nghiên cứu giải thuật và thiết kế bộ lọc Median và Modified hybrid median. Hiển thị được ảnh gốc và ảnh sau khi lọc bằng hai bộ lọc Median và Modified hybrid median trên cùng màn hình, cùng một thời điểm. Cuối cùng tác giả cũng nhận thấy với ảnh siêu âm bị nhiễu đốm nên dùng bộ lọc Modified hybrid median khi thực hiện trên FPGA vì nó mang lại hiệu quả hơn: nhiễu đốm giảm rõ rệt, cạnh của hình ảnh được bảo quản tốt, kết cấu hình ảnh giống với ảnh gốc hơn so với bộ lọc Median. Tài liệu tham khảo [1] Giáo sư Nguyễn Văn Ngọ, Giáo trình Xử lý ảnh [2] Lương Mạnh Bá, Nguyễn Thanh Thủy, Nhập môn Xử lý ảnh, Nhà xuất bản Trường đại học Bách Khoa Hà Nội. 2006 [3] Nguyễn Quang Hoan, Xử lý ảnh, Học viện bưu chính viễn thông. 2006 [4] Nguyễn Kim Sách, Hàn Trung Định, Khôi phục ảnh động bị nhiễu - Speckle, Blotch, Scratch [5] DE2 Reference Manual, Altera. 2005 [6] Alasdair McAndrew, An Introduction to Digital Image Processing with Matlab, Victoria University of Technology. 2004 [7] N. K. Ragesh1, A. R. Anil, Dr. R. RajeshDigital, Image Denoising in Medical Ultrasound Images: A Survey, ICGST AIML - 11 Conference, Dubai, UAE. 12-14 April 2011 [8] R.Vanithamani, G. Umamaheswari , M. Ezhilarasi, Modified Hybrid Median Filter for Effective Speckle Reduction in Ultrasound Images, Senior Lecturer, Department of ECE, PSG College of Technology, Coimbatore, Tamilnadu, India [9] Kalpana Saini, A Modified hybrid Filter for Echocardiographic Image. June, 2012. Vol. 5, No. 2 [10] Shruthi G Department of ECE, A Novel Approach for Speckle eduction andEnhancement of Ultrasound Images. May 2012. Vol. 45, No. 20 [11] R.Vanithamani, Modified Hybrid Median Filter for Effective Speckle Reduction in Ultrasound Images 8
- BÀI BÁO KHOA HỌC THỰC HIỆN CÔNG BỐ THEO QUY CHẾ ĐÀO TẠO THẠC SỸ Bài báo khoa học của học viên có xác nhận và đề xuất cho đăng của Giảng viên hướng dẫn Bản tiếng Việt ©, TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH và TÁC GIẢ Bản quyền tác phẩm đã được bảo hộ bởi Luật xuất bản và Luật Sở hữu trí tuệ Việt Nam. Nghiêm cấm mọi hình thức xuất bản, sao chụp, phát tán nội dung khi chưa có sự đồng ý của tác giả và Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh. ĐỂ CÓ BÀI BÁO KHOA HỌC TỐT, CẦN CHUNG TAY BẢO VỆ TÁC QUYỀN! Thực hiện theo MTCL & KHTHMTCL Năm học 2016-2017 của Thư viện Trường Đại học Sư phạm Kỹ thuật Tp. Hồ Chí Minh.