Đồ án xử lý ảnh nhận dạng biển số xe dùng kit friendly ARM
Lời cảm ơn Phần mở đầu Chương 1: Tổng quan về bộ vi xử lý ARM 1. Giới thiệu về bộ vi xử lý ARM. 1.1. Tổng quan về vi xử lý arm Trong khoảng 5 năm trở lại đây, cái tên ARM được nhắc đến rất nhiều đi cùng theo sự phát triển của smartphone, tablet. Nếu như trên mảng PC chúng ta có Intel, AMD thì trên mảng di động, ARM cũng "nổi tiếng" với mức độ tương đương bởi vì kiến trúc vi xử lí của họ được sử dụng trong hầu hết các thiết bị di động đang có mặt trên thị trường.Bài viết này sẽ cung cấp cho bạn một cái nhìn chi tiết về vị trí của ARM hiện tại cũng như con đường trong tương lai gần của hãng Tên đây đủ của hãng là ARM Holdings và đóng trụ sở chính tại Anh Quốc. Ban đầu, chữ ARM viết tắt cho cụm từ Acom RISC Machine, trong đó RISC là một cách thiết kế vi xử lí (sẽ nói kĩ hơn ở bên dưới), nhưng sau đó chữ Acorn đã được thay bằng chữ Advanced. Kiến trúc ARM được phát triển lần đầu tiên vào thập niên 1980 để dùng cho máy tính để bàn. Tính đến thời điểm hiện tại (2013), ARM là kiến trúc tập lệnh chỉ dẫn 32-bit được phổ biến nhất thế giới, vượt qua cả kiến trúc x86 của Intel, tính theo số lượng chip được sản xuất. Theo ARM Holdings, chỉ tính riêng năm 2010, kiến trúc của họ đã có mặt trên 95% số smartphone, 35% số TV và set-top box, 10% số máy tính di động được bán ra. Kiến trúc ARM được tạo ra dựa trên thiết kế RISC (Reduced instruction set computing, tạm dịch là "tập chỉ dẫn điện toán được giản lược"). Thiết kế này giúp giảm đáng kể số lượng bóng bán dẫn cần thiết để vận hành một chiếc máy tính so với kiểu CISC (complex instruction set computer, tạm dịch là "tập chỉ dẫn máy tính phức tạp"), vốn được sử dụng phổ biến trong kiến trúc x86 của Intel cũng như các CPU AMD dành cho máy tính. Lợi ích của việc sử dụng RISC đó là các con chip được sản xuất với chi phí thấp hơn, lượng nhiệt tỏa ra khi hoạt động thấp hơn, mức độ tiêu thụ điện thấp hơn. Chính vì thế, những bộ xử lí ARM thường được dùng trong các thiết bị di động đòi hỏi thời lượng pin lâu và kiểu dáng nhỏ, nhẹ, điển hình là smartphone và tablet ngày nay. Theo trang tin công nghệ của Anh ITProPortal, hãng ARM (Apple là một trong những nhà đồng sáng lập), phát triển nhanh chóng là do hoạt động theo một mô hình doanh nghiệp khác hẳn so với đối thủ chính của mình là Intel. Không chỉ thiết kế, sản xuất và bán chip (gồm hệ thống trên một vi mạch SoC hay bộ vi xử lí), ARM còn cho phép các công ty đối tác tiếp tục phát triển chip nền ARM và chỉ thu phí bản quyền và tiền sở hữu trí tuệ khi các đối tác đó kiếm được lợi nhuận. Do đó, doanh thu của ARM chỉ đạt 0,5 tỉ bảng Anh, ít hơn nhiều so với doanh thu 34 tỉ bảng của Intel. Tuy nhiên, khoản vốn mà ARM bỏ ra là rất nhỏ (trong khi Intel phải chi hơn 10 tỉ USD tiền vốn năm 2011) và mô hình kinh doanh của hãng ổn định hơn do phần lớn cổ đông của hãng là các công ty sản xuất chất bán dẫn nằm trong top 20 của thế giới. 1 Vì thế, cạnh tranh với hãng ARM đồng nghĩa với việc phải đối đầu với các công ty lớn như Samsung, LG, Panasonic hay Nvidia…, và sự nổi lên của hãng này trên thị trường tiêu thụ rộng lớn hơn chủ yếu là do thị trường các thiết bị di động đang bùng nổ mạnh mẽ. Trong số hàng trăm triệu sản phẩm smartphone và máy tính bảng đã được bán ra trong vài năm trở lại đây thì hơn 90% sử dụng công nghệ ARM trên các sản phẩm SoC (hệ thống trên một con chip, hệ thống trên một vi mạch). Ta cần phải hiểu rõ một số điểm sau: Các khái niệm Hệ thống trên một vi mạch SoC, chip vi xử lí và chipset thường bị sử dụng lẫn lộn với nhau. Hiểu một cách đơn giản thì hệ thống trên một vi mạch SoC là khái niệm được các chuyên viên kĩ thuật và các nhà phân tích dùng chủ yếu để chỉ một hệ thống tích hợp nhiều thành phần bao gồm CPU, hệ thống đồ họa thứ cấp, bộ nhớ và một vài thành phần khác. SoC đôi khi được coi như là một bộ xử lí ứng dụng. Khái niệm bộ vi xử lí (hay bộ xử lí di động) được dùng ngày càng nhiều vì khái niệm này dễ hiểu đối với người dùng hơn trong khi thuật ngữ chipset dùng để chỉ các thành phần phụ bổ sung thêm vào hệ thống trên một vi mạch, ví dụ như vi mạch tần số phát sóng. Hãng ARM không sản xuất bộ vi xử lí. Hãng này chỉ cấp giấy phép để các đối tác của mình có thể dùng theo nhu cầu của họ. Nói một cách ngắn gọn, thời gian cần thiết để sản xuất ra một hệ thống trên một vi mạch SoC có thể được giảm xuống một cách đáng kể nhờ việc sử dụng những thiết kế sẵn có (các thiết kế sẵn có này khá ổn định, và được gọi là Hard Macro). Các đối tác có giấy phép nền tảng ARM có thể toàn quyền sáng tạo sản phẩm của mình. Apple, Nvidia, Cavium, Marvell, TI, Qualcomm, AppliedMicro, Microsoft và Intel đều có trong tay giấy phép quan trọng và đắt giá đó. Hãng ARM cũng thiết kế một bộ phận quan trọng thuộc hệ thống SoC, đó là bộ xử lí đồ họa GPU Mali, sử dụng công nghệ đồ họa mua lại từ nhà sản xuất chip đến từ Na Uy - Falanx vào tháng 6 năm 2006. Điều này có nghĩa là một công ty đối tác có thể sử dụng bộ xử lí đồ họa và bộ vi xử lí từ hãng ARM và các thành phần từ các nhà sản xuất khác để lắp ghép lại thành hệ thống SoC. Công ty đối tác đó có thể lựa chọn hoặc là cải tiến công nghệ (điều này sẽ làm tăng thời gian sản xuất và yêu cầu đầu tư nghiên cứu, phát triển) hoặc giữ nguyên phiên bản hiện có để bán ra thị trường càng nhiều càng tốt. ARM hiện có trong tay khoảng 900 giấy phép bản quyền với gần 300 trong số đó liên quan đến bộ vi xử lí Cortex nền ARM thế hệ mới nhất. Theo thống kê thì hai tỉ chip nền ARM đã được bán ra trong quý 2/2012, đem về cho hãng ARM trung bình khoảng 0,03 bảng mỗi chip. Theo một bản báo cáo công bố bởi công ty nghiên cứu thị trường Strategy Analytics vào tháng Tám vừa qua, thì Qualcomm với hệ thống SoC đã đạt mức doanh thu gần 1,1 tỉ USD, tương đương 44% toàn bộ thị trường, và trở thành nhà sản xuất chip nền ARM lớn nhất hiện nay. Xếp sau Qualcomm là Samsung, hãng Texas Instruments, Broadcon, Mediatek và Marvell. Apple cũng là một trong số các nhà sản xuất chip nền ARM. Tuy nhiên, Apple không bán ra bất kì SoC nào mà tất cả các thiết kế của hãng (bao gồm các mẫu phổ biến trên thị trường như chip A4, A5, A6) đều được dùng độc quyền cho các thiết bị của mình bao gồm iPad, iPhone, iPod Touch và TV Apple. 2 Hình 1.1. Các thiết kế chip của Apple đều do hãng sử dụng độc quyền Khác với thị trường chip nền x86 chỉ có 2 nhà sản xuất chính (Intel và AMD) và một hệ điều hành (Windows), hệ thống di động nền ARM tạo nên bởi hơn 10 công ty hoạt động trên nhiều hệ điều hành (iOS, Android, Windows Phone, Blackberry, Tizen) khiến cho việc so sánh hoạt động của từng hãng trở thành một việc mang đầy tính suy đoán và mạo hiểm. Dưới đây là danh sách các công ty sản xuất thiết bị chất bán dẫn có sản phẩm chủ yếu nhắm vào ngành smartphone và máy tính bảng. Công ty Dòng sản phẩm Sản phẩm Qualcomm Snapdragon Sony Xperia, HTC One, Motorola Razr M, và các smartphone hỗ trợ mạng LTE trên thị trường. Samsung Exynos Apple Dòng chip Ax ST-Ericsson Novathor Nvidia Tegra Hầu hết các sản phẩm máy tính bảng và smartphone Galaxy của Samsung. iPhone, iPad Sony Xperia U và Sony Xperia Sola Hầu hết máy tính bảng Android, Microsoft Surface, dòng HTC One X và dòng LG Optimus 4x Máy tính bảng Archos, một số loại smartphone Huawei, điện thoại Motorola đời cũ TI OMAP Broadcom Dòng BCM AllWinner Dòng A Chủ yếu các sản phẩm máy tính bảng và smartphone của Trung Quốc Marvell Armada HP Palm Pre Rockchip Dòng RK Chủ yếu trong các loại máy tính bảng và smartphone Trung Quốc Mediatek MTK Chủ yếu trong các loại máy tính bảng và Một số điện thoại Nokia 3 smartphone Trung Quốc Huawei/HiSillicon KV3 Smartphone Huawei Ascend P1D và máy tính bảng Media Pad Freescale i.MX Nhiều máy tính bảng của Trung Quốc Matsubishi/Panasonic Uniphier Các thiết bị nghe nhìn của Panasonic Hình 1.2. Kiến trúc của ARM Với phần lớn người lập trình nhúng, thường hay có thói quen sử dụng một dòng vi xử lý thông dụng ví dụ như 8051, AVR, PIC... Mỗi khi muốn nâng cấp hay nghiên cứu một sản phẩm mới, ngoài việc phải coi lại kiến trúc phần cứng, điều quan trọng là làm thế nào để chạy những chương trình ứng dụng đang hoạt động tốt ở vi xử lý cũ. Nắm bắt được hạn chế này, các nhà sản xuất phần cứng đã cùng hợp tác và cho ra đời dòng vi xử lý ARM với những chuẩn phần cứng đáp ứng khả năng tương thích với phần mềm. Phần lõi ARM được cấp phép sở hữu trí tuệ (Intellectual Property), và tuân theo chuẩn phần cứng ARM, các phần ngoại vi thì tùy thuộc vào nhà sản xuất sẽ có những quy định riêng về hệ thống thanh ghi và tập lệnh bổ sung. 4 Hình 1.3. Lịch sử phát triển từ kiến trúc ARMv4 đến ARMv7 Lõi ARM Cortex được chia ra thành ba dòng cấu hình chính, với các ký hiệu viết tắt lần lượt là: A, R, M. Chữ A là viết tắt của Application, lõi ARM dòng này hỗ trợ cho các ứng dụng có độ phức tạp cao như: máy tính, điện thoại di động... R là viết tắt của Realtime, các ứng dụng cần tính toán xử lý thời gian thực được hỗ trợ bởi cấu hình này. M là Microcontroller, dành cho các ứng dụng công nghiệp và điện tử tiêu dùng. Hình trên cho thấy các kiến trúc sau v5,v6,v7 đều kế thừa từ v4T. 1.2. Vi xử lý S3C6410 1.2.1. Tổng quan S3C6410X là một bộ vi xử lý RISC 16/32-bit , được thiết kế để cung cấp một chi phí -hiệu quả, khả năng tiết kiệm điện , hiệu suất cao ứng dụng giải pháp xử lý cho điện thoại di động và các ứng dụng chung , cung cấp tối ưu hóa hiệu suất cho các dịch vụ truyền thông 5 2.5G và 3G, S3C6410X thông qua kiến trúc bus 64/32-bit nội bộ. Các kiến trúc bus 64/32bit nội bộ bao gồm AXI , AHB và APB bus. Nó cũng bao gồm rất nhiều bộ xử lý mạnh phần cứng cho các tác vụ như xử lý video chuyển động , xử lý âm thanh , đồ họa 2D , thao tác màn hình hiển thị và mở rộng quy mô . Tích hợp nhiều định dạng Codec ( MFC ) hỗ trợ mã hóa và giải mã MPEG4/H.263/H.264 và giải mã VC1 . Mã hóa / giải mã hỗ trợ hội nghị truyền hình thời gian thực và truyền hình ra cho cả hai chế độ NTSC và PAL . Các S3C6410X có một giao diện tối ưu bộ nhớ bên ngoài. Giao diện này tối ưu bộ nhớ bên ngoài có khả năng duy trì băng thông bộ nhớ cao yêu cầu trong dịch vụ truyền thông cao cấp . Hệ thống bộ nhớ có cổng bên ngoài bộ nhớ kép , DRAM và Flash / ROM . Cổng DRAM có thể được cấu hình để hỗ trợ điện thoại di động DDR , DDR , SDRAM điện thoại di động và SDRAM . Cổng Flash / ROM hỗ trợ NOR Flash, NAND Flash, OneNAND , CF và ROM loại bộ nhớ ngoài. Để giảm chi phí hệ thống và tăng cường chức năng tổng thể, bao gồm nhiều thiết bị ngoại vi S3C6410X phần cứng như một giao diện máy ảnh , màn hình TFT màu sắc trung thực 24-bit điều khiển màn hình LCD, hệ thống quản lý ( quản lý điện ...), 4 kênh UART , 32 kênh DMA , 5 kênh Thời Gian 32bit với sản lượng 2PWM , GPIO , I2S -Bus giao diện , giao diện I2C -BUS , USB Host , USB OTG thiết bị hoạt động ở tốc độ cao ( 480Mbps ) , 3 kênh SD / MMC Host Controller và PLLs cho thế hệ đồng hồ . Các hệ thống phụ ARM dựa trên lõi ARM1176JZF - S . Nó bao gồm 16KB bộ nhớ riêng và 16KB data cache , 16KB bộ nhớ và 16KB data TCM . Nó cũng bao gồm một MMU đầy đủ để xử lý quản lý bộ nhớ ảo . Các ARM1176JZF - S là một chip MCU duy nhất, bao gồm hỗ trợ cho JAVA. Các ARM1176JZF – S bao gồm một vector Coprocessor điểm nổi chuyên dụng cho phép thực hiện hiệu quả của mã hóa khác nhau chương trình cũng như chất lượng các ứng dụng đồ họa 3D cao . Các S3C6410X thông qua các AMBA de - facto kiến trúc bus tiêu chuẩn, các tính năng tiêu chuẩn công nghiệp mạnh mẽ cho phép các S3C6410X để hỗ trợ rất nhiều các ngành công nghiệp hệ điều hành tiêu chuẩn. Cung cấp hai loại sản phẩm POP mà là dựa trên S3C6410X . PoP 6410X LOẠI Alà một POP (gói trên gói ) sản phẩm xếp chồng lên nhau với S3C6410X và bộ nhớ MCP (2G OneNAND + 512Mb Moblie DDR x 2ea ) Các 6410X PoP Loại D là một POP (gói trên gói ) sản phẩm xếp chồng lên nhau với S3C6410X và bộ nhớ MCP ( 2Gb NAND + 512Mb OneDRAM + 512MB Mobile DDR ) 1.2.2. Tính năng 6 Hình 1.4. Sơ đồ khối S3C6410 Các tính năng của S3C6410X RISC bao gồm: • ARM1176JZF - S dựa trên hệ thống con với dụng cụ tăng tốc Java và 16KB/16KB I/D cache CPU và 16KB/16KB I/D TCM . • Tốc độ xử lý 533MHz tại 1.1V và 667MHz tại 1,2 V tương ứng . • Giao diện máy ảnh 8-bit ITU 601/656 lên đến 4 triệu điểm ảnh cho điểm ảnh thu nhỏ và 16 triệu cho độ phân giải unscaled . • Định dạng đa Codec cung cấp mã hóa và giải mã MPEG-4/H.263/H.264 lên tới 30fps @ SD và giải mã video VC1 lên đến 30fps @ SD . • Tăng tốc đồ họa 2D với BitBlit và luân chuyển . • Tăng tốc đồ họa 3D 4M/s @ 133MHz ( chỉ chuyển đổi ) • Giao diện âm thanh codec AC -97 và giao diện âm thanh nối tiếp PCM. • 1/2/4bpp Palletized hoặc 16bpp/24bpp Non-Palletize Color -TFT • I2S và hỗ trợ giao diện I2C . • Cổng hồng ngoại chuyên dụng cho FIR , MIR và SIR . • Cấu hình GPIO linh hoạt. • Cổng USB 2.0 OTG hỗ trợ tốc độ cao cho thiết bị ( 480Mbps , thu phát on-chip) . • Cổng USB 1.1 hỗ trợ máy chủ tốc độ đầy đủ ( 12Mbps , thu phát on-chip) . • SD / MMC / SDIO / CE-ATA Host Controller • Đồng hồ thời gian thực , PLL , hẹn giờ với PWM và Watchdog Timer. • Điều khiển 32 kênh DMA. 7 • Hỗ trợ ma trận phím 8x8. • Quản lý điện năng nâng cao cho các ứng dụng điện thoại di động . • Bộ nhớ hệ thống con − Giao diện SRAM / ROM / NOR Flash với bus dữ liệu x8 hoặc x16. − Giao diện muxed OneNAND với bus dữ liệu x16. − Giao diện NAND Flash với bus dữ liệu x8. − Giao diện SDRAM với bus dữ liệu x32(Port1). − Giao diện SDRAM di động với bus dữ liệu x32 (Port1) − Giao diện DDR với bus dữ liệu x32 (Port1) − Giao diện DDR di động với bus dữ liệu x32 (Port1) 1.2.3. Vi xử lý Bộ vi xử lý ARM1176JZF - S kết hợp một đơn vị số nguyên mà thực hiện trên các kiến trúc ARM ARM11 V6. Nó hỗ trợ ARM , Thumb ™ và công nghệ Jazelle để cho phép thực hiện trực tiếp của bytecode Java , và một loạt các SIMD DSP hướng dẫn hoạt động trên 16-bit hoặc giá trị dữ liệu 8-bit trong thanh ghi 32-bit . Các tính năng của bộ xử lý ARM1176JZF - S bao gồm: • Tốc độ vi xử lý Kiến trúc Bus nâng cao (AMBA) nâng cao mở rộng giao diện ( AXI ) mức hai giao diện hỗ trợ triển khai đa ưu tiên . • Đơn vị Integer với bộ EmbeddedICE -RT logic. • Pipeline tám giai đoạn . • Cấu hình độ trễ gián đoạn thấp. • Bộ đồng xử lý CP14 và CP15 . • Đơn vị quản lý bộ nhớ dữ liệu ( MMUs ) , quản lý sử dụng cấu trúc MicroTLB được hỗ trợ bởi một thống nhất main TLB. • Cache dữ liệu và chỉ thị, bao gồm một bộ nhớ cache dữ liệu non-blocking với Hit-UnderMiss (HUM) • Giao diện chỉ mục và lưu trữ cache địa chỉ vật lý. • 64-bit cho cả hai Cache . • Vector Floating-Point ( VFP ) hỗ trợ bộ đồng xử lý. 2. KIT vi xử lý Friendly ARM Tiny 6410. 2.1. Giới thiệu chung Board S3C6310 là một board máy tính nhúng lõi đơn nhỏ gọn dựa trên nền tảng Samsung ARM11 S3C6410. Thiết kế đặc biệt cho các thiết bị Internet di động, Notebook,.. Các tính năng cung cấp phổ biến cho các thế hệ Pocket PC và smart phone mới nhất. Board S3C6410 cho phép dễ dàng phát triển ứng dụng nhúng qua các công cụ tương thích với máy tính đồng thời đảm bảo độ tin cậy, chắc chắn cho hệ thống. Nhiệt độ có thể chịu được rơi vào khoảng -20oC đến +70oC nếu không có tản nhiệt cho chip. Các tính năng khác bao gồm 4 cổng UART, SPI, I2C,1 đồng hồ thời gian thực sử dụng nguồn riêng, bộ nhớ NAND Flash, bộ nhớ DDRam.. Board hỗ trợ hệ điều hành nhúng wince6.0, Linux 2.6, Android và Ubuntu. 8 2.2. Đặc điểm • CPU/SOC : S3C6410, Samsung • Core/Clock :ARM1176JZF-S. Mặc định 533 MHz. Lớn nhất 667 MHz. • RAM : 256 Mbytes DDR2 (32 bit buss) • Flash : 2 Gbyte NAND Flash1 1024 Byte EEPROM trên giao diện IIC • LCD : Sharp 4.3” 480x272 • Touch screen : Tích hợp trong bảng điều khiển Sharp LCD • Ethernet : RJ45 10/100M với DM9000 • Serial : 4 DB9 RS232 COM0, COM1, COM2, COM3 • USB : 1 MiniUSB Device USB2.0, 1 USB Host USB1.1 • Audio : Jack cắm Stereo – 3.5mm, Jack cắm Mic • TV : Jack cắm tổng hợp RCA ngõ ra TV • IR : Đầu thu hồng ngoại • SD :SD Card kích cỡ thông thường, hỗ trợ tới 32 Gbytes • SDIO : SDIO header cho SDIO Wifi, ... + SPI và IIC. • JTAG : Đầu cắm 2x5 10 Pin JTAG • LCD : 40 pin header, 2x20, 41 pin Mini/Micro2550 thiết kế cho FFC • Camera : CMOS CAM130 • RTC : Được hỗ trợ pin RTC • Software o Superboot – Có thể tự động tạo file boot cho bộ nhớ flash bằng thẻ SD o Nhân Linux 2.6.x hỗ trợ tất cả I/O.với file hệ thống Qtopia 2.2.0 + Qt + Qt/E o Ubuntu : Người sử dụng có thể tải thư viện và driver trên Mini6410. o Android 2.0 o WindowsCE6.0r3 .Net xây dựng sẵn bản Custom/English. 2.3. Phần cứng 9 2.3.1. Sơ đồ khối Hình 1.5. Sơ đồ khối của board 2.3.2. Thiết kế Nguồn S3C Nguồn của hệ thống board được cung cấp trực tiếp bởi nguồn 5V/2A. Ngoài ra các nguồn điện áp khác tạo ra trên board như 3.3V, 1.8V thông qua các mạch ổn áp từ nguồn cấp 5V. Vì board Mini2440 không được thiết kế đặc biệt cho các thiết bị cầm tay nên nó không chứa mạch để quản lí nguồn năng lượng cung cấp. Do đó, mạch cung cấp được điều khiển thông qua switch S1. Hình 1.6: Nơi cấp nguồn 10 Hình 1.7: Mạch nguyên lý của nguồn vào Mức điện áp của các thành phần: VDD_5V: 5V VDD_IO: 3.3V VDD_OTG: 3.3V VDD_OTGI: 1.2V VDD_Alive: 1.2V VDD_INT: 1.3V VDD_ARM: 1.2V 11 VDD_RTC: 3V VDD_ADC: 3.3V VDD_MDDR: 1.8V VDD_AC97:3.3V VDD_WIFI: 3.3V Hình 1.8: Sơ đồ khối nguồn vào 2.3.3. Cấu hình chế độ khởi động Bootloader Chip S3C6410 hỗ trợ nhiều loại chế độ khởi động như Nand Flash, Nor Flash, OneNAND và SD Card và như vậy. Nó chọn thiết bị khởi động và chế độ thông qua cấu hình trạng thái chân khác nhau "khi hệ thống bắt đầu Hình 1.9: Các chế độ của board “OM0" là nguồn đồng hồ chip S3C6410 chọn tín hiệu. Nó chọn "XTIpll" , khi "OM0" là "0", nó chọn "EXTCLK" khi "OM0" là "1" . Các IDEA6410 sử dụng "XTIpll". "SELNAND" là một tín hiệu của việc lựa chọn loại bộ nhớ, đó là mức cao khi lựa chọn NAND Flash , đó là mức thấp khi chọn OneNAND . Board S3C6410 sử dụng NAND Flash . EINT13 - EINT15 là thiết bị chọn chân của chế độ khởi động IROM, khi thông qua chế độ khởi động IROM, các S3C6410 chip chính chạy chương trình giải quyết trước sau đó đọc tình trạng ba chân EINT15 , EINT14 , EINT13 với cấu hình khác nhau để lựa chọn thiết bị khởi động. Đó là chế độ khởi động IROM khi người dùng chọn thẻ SD là thiết bị khởi động. Ở chế độ này , EINT15 , EINT14 , EINT13 là mức thấp. Vì vậy, người dùng sẽ thấy trên bảng S3C6410 , những tín hiệu EINT15 , EINT14 , EINT13 được trực tiếp kết nối với mặt đất . DBGSEL là JTAG giao diện cuộc gọi chọn tín hiệu. Trên board S3C6410, ba chân EINT13 - 15 đã được đặt vào mức độ thấp , hãy chọn chế độ khởi động bằng cách cấu hình OM1 - OM4 và SELNAND. Ports OM1 OM2 OM3 OM4 SW1’s Position 1 2 3 4 Nor Flash boot- 1 0 1 0 Nand Flash 1 1 0 0 XSELNAND SD boot-up 1 1 1 1 ON[4:1] Hình 1.10: cấu hình SW1 Lưu EINT[15:13] ý: Boo-up Device a. "1" là SW1 ON, "0" là SW1 OFF, "X" Note là mức cao hay mức thấp. b. Chế 1 độ khởi động mặc định của IDEA6410 là NAND Flash. 0000 XXX Nand Flash 512k page size, addressing cycle is 3 clock 1 Hình 1.11: SW1 OM0 là nguồn lựa chọn tín hiệu đồng hồ chip S3C6410. Nó chọn XTIpll khi OM0 là "0", nó lựa chọn EXTCLK khi OM0 là "1". Các IDEA6410 sử dụng XTIpll. 2.3.4. Mô tả thiết kế phần cứng và giao diện S3C6410 Nand Flash Board S3C6410 lựa chonchọn SLC NAND Flash K9F2G08 từ Samsung, kích thước của nó là Bytes 256M, chủ yếu để lưu trữ nhân, ứng dụng, hệ thống tập tin và dữ liệu người dùng. Ngoài ra, phần sơ đồ chân và chức năng tương thích với các thiết bị Nand Flash được liệt kê ở trên cũng có thể được sử dụng với Board S3C6410. Các thiết bị NAND Flash thường có tuổi thọ ít nhất 100.000 xóa/chu kỳ chương trình và tỷ lệ lưu giữ dữ liệu của 10 năm. NAND Flash là một thiết bị khởi động, khi khởi động, các chip chính S3C6410 tự động sao chép 8K trong Nand Flash vào bộ nhớ đệm của chip để chạy. Sau khi cấu hình khởi tạo, các chip nhảy tới địa chỉ bắt đầu của nhân để chạy các hệ điều hành. Hình ảnh dưới đây cho thấy bản vẽ sơ đồ mạch của Nand Flash: Hình 1.12: Sơ đồ mạch của Nand Flash. DDR RAM Board nhận 2 thanh DDR RAM Mobile Samsung K$X%!!63PC 64M Bytes với tốc độ 266MHz. Đó là gói nhỏ để tiết kiệm diwwnj tích trên board, và cũng sử dụng đường dây mạch trên khắp chiều dài machjPCB để đảm bảo việc board chạy ổn định và đạt tốc độ cao. NOR Flash Board S3C6410 nhận Nor Flash ARM AM29LV160DB, chip S3C6410 hỗ trợ tối đa 27 địa chỉ tín hiệu địa chỉ từ AA0-A26, trong đó A20-A26 được tái sử dụng với các tín hiệu dữ liệu DDR D20-D26. Như Board S3C6410 gồm DDR RAM do đó chỉ có 19 dòng A1-A19 cho NOR Flash để sử dụng. Nor Flash có phạm vi là 1MB. NOR Flash có thể được cấu hình như một thiết bị khởi động, nó thông qua chế độ khởi động 16-bit SROM. Hình ảnh dưới đây cho thấy bản vẽ sơ đồ mạch của NOR Flash: Hình 1.13: Bản vẽ sơ đồ mạch của NOR Flash Giao diện nối tiếp Có bốn giao diện Serial, UART0, UART1 là 5 dòng, trong khi UART2, UART3 là 3 dòng. Board sử dụng ba chip giao diện nối tiếp SP3232 để thay đổi 4 giao diện nối tiếp mức RS232. Người dùng có thể sử dụng chuyển đổi SW2 để thay đổi đầu ra của giao diện nối tiếp tới RS232 hoặc TTL. Có một phần của cổng DB9 tiêu chuẩn tại kết nối J4, mà đặc biệt là thiết kế để gỡ lỗi và in thông điệp gỡ lỗi. Dưới đây hình ảnh cho thấy mạch của UART0 Hình 1.14: Mạch của UART0 UART1, UART2 hoặc UART3 có thể được đặt là ngõ ra tới RS232 hoặc TTL bằng cách điều chỉnh công tắc SW2. Tiêu đề pin J6, J7, J8 là tương ứng với UART1, UART2, UART3 lựa chọn đầu ra RS232, pin tiêu đề J5 là đầu ra TTL cho UART1, UART2, UART3. Hình ảnh dưới đây cho thấy những kết nối pin tiêu đề. Hình 1.15: Kết nối UART Dưới đây là hình ảnh các bản vẽ mạch của UART1, UART2 và UART3: Hình 1.16: Bản vẽ mạch của UART1, UAR2, UART3 2.3.5. Giao diện USB Host Giao diện USB Host hỗ trợ USB 2.0 tốc độ đầy đủ và cổng của nó là loại A. Cổng hỗ trợ U-Disk, bàn phím USB, USB Portal Disc, USB Mouse. Dưới đây là bản vẽ mạch của USB Host. Hình 1.17: Bản vẽ mạch của USB Host USB OTG Bộ điều khiển hỗ trợ tính năng On-The-Go (OTG). Universal Serial Bus OTG là một thiết bị có khả năng bắt đầu phiên giao dịch, kiểm soát việc kết nối và trao đổi Host/ngoại vi xen kẽ vai trò với nhau. USB OTG hỗ trợ giao thức USB 2.0, nó hỗ trợ tốc độ cao(480Mbps), tốc độ Trung bình (12Mbps), tốc độ thấp (1.5Mbps). Board S3C6410 mặc định chạy ở tốc độ cao và chế độ slave thuận tiện cho việc kết nối với máy tính. Nó có thể sử dụng USB OTG để tải chương trình hoặc ứng dụng khi người sử dụng đang phát triển ứng dụng. USB OTG loại cổng là Mini A/B, hình ảnh dưới đây là bản vẽ mạch của nó. Hình 1.18: Hình vẽ mạch của USB Slave JTAG Board S3C6410 được trang bị với một giao diện JTAG để tải về mã chương trình vào flash bên ngoài, bên trong bộ điều khiển bộ nhớ RAM hoặc cho các chương trình hiện đang thực hiện gỡ lỗi. Giao diện JTAG mở rộng ra 5*2 2.0mm đầu cắm J2. Thông qua cấu hình tín hiệu DBGSEL người sử dụng có thể chọn hoạt động Flash ngoài hay bộ điều khiển bộ nhớ RAM nội bộ, dưới đây là cấu hình chi tiết của tín hiệu DBGSEL. - Khi DBGSEL được thiết lập ở mức cao, JTAG kết nối bộ điều khiển bộ nhớ RAM nội bộ và có thể gọi vào địa chỉ của SRAM điều khiển nội bộ. - Khi DBGSEL được thiết lập là cấp thấp, JTAG kết nối bộ nhớ flash bên ngoài cho các chương trình gỡ lỗi. Hình 1.19: Hình ảnh và bản vẽ mạch của kết nối JTAG SD Card Cổng thẻ SD J12 hỗ trợ giao thức bộ nhớ SD 2.0 và SDIO giao thức 1.0. Như SD nó có thể hỗ trợ thẻ 8G SD,như SDIO nó có thể hỗ trợ WIFI, Module GPS. Ngoài ra các thẻ SD có thể được dùng như là thiết bị khởi động cho sản xuất hàng loạt và dễ dàng cập nhật phần mềm. Hình ảnh dưới đây cho thấy bản vẽ mạch của thẻ SD. Hình 1.19: Bản vẽ mạch của SD Card 2.3.6. Giao diện máy ảnh Giao diện máy ảnh hỗ trợ chế độ 8 bit ITU-R BT 601/656 và độ phân giải lên đến 4096x4096 điểm ảnh. Giao diện máy ảnh là một kết nối pin loại 10*2 tại J10. Giao diện không chỉ có tín hiệu máy ảnh dẫn ra từ CPU kiểm soát nhưng cũng đã được thêm vào tín hiệu IIC và CAM_PD/GPP14 (GPIO). Thông thường các thiết bị máy ảnh được thiết lập IIC, nhưng nhà sản xuất đã thêm CAM_PD/GPP14 để bảo vệ IIC không đụng độ với các thiết bị bên ngoài khác, một khi trường hợp này xảy ra, CAM_PD/GPP14 (GPIO) có thể thay thế IIC. Nhà sản xuất cũng thêm CAM_PD/GPP14 cho quản lý điện cho thiết bị máy ảnh như tắt nguồn, quản lý tiết kiệm điện năng. Embest phát triển một mô-đun máy ảnh có thể kết nối trực tiếp với Board, và độ phân giải lên đến 1.3M pixel. Dưới đây là hình ảnh về giao diện máy ảnh: Hình 1.21: Hình ảnh và bản vẽ mạch của giao diện máy ảnh 2.3.7. Màn hình TFT LCD và giao diện màn hình cảm ứng Các gói phần mềm mặc định cho Board S3C6410 có chứa một phần của Module màn hình LCD, Module được làm từ một phần của LCD 4.3inch TFT là Innolux AT043TN24, một phần của màn hình cảm ứng và một phần của Board chuyển đổi. Các mô-đun được kết nối với Board thông qua 41pin 0.5mm và cáp FPC tại kết nối J9. Các kết nối bao gồm 2 GPIO và 1 PWM, Board S3C6410 sử dụng PWM để kiểm soát đen nền, nhưng 2 GPIO không được sử dụng, người dùng có thể sử dụng 2 GPIO để thiết lập lại, quản lý điện năng và nhiều chức năng khác. Dưới đây là hình ảnh về màn hình LCD và kết nối TC. Hình 1.22:Hình ảnh của màn hình LCD và kết nối TC Hình 1.23: Bản vẽ mạch của màn hình LCD và kết nối TC 2.3.8. Phím reset Board S3C6410 gồm chip reset MAX811T. Dưới đây là hình ảnh vẽ mạch Reset. Hình 1.24: Hình ảnh và bản vẽ mạch của nút Reset 2.3.9. Giao diện âm thanh Board S3C6410 thông qua bộ điều khiển nội bộ Bus AC97 để kết nối chip âm thanh bên ngoài WM9714. Board có kết nối đường ra (J16), Line trong (J17) và MIC trong (J15). Dưới đây là hình ảnh về giao diện âm thanh. Hình 1.25. Hình ảnh và bản vẽ mạch của các jack cắm âm thanh 2.3.10. Buzzer Board S3C6410 có DC Buzzer. Nó sẽ sử dụng NPN DYNATRON SS8050 để khuếch đại âm thanh cho buzzer. Buzzer được điều khiển bởi tín hiệu PWM1_GDF15. Dưới đây là mạch vẽ về Buzzer: Hình 1.26: Hình ảnh và bản vẽ của mạch Buzzer 2.3.11. Giao diện Ethernet 100M Giao diện Ethernet được bổ sung vào Board của Ethernet Transformer và kết nối RJ45. Bộ điều khiển Ethernet là chip DM900AE bên ngoài, chip gọi tới tín hiệu ngắt ngoài CPU EINT7. Về quá trình phát triển, giao diện có thể kết nối với máy tính thông qua đường dây Ethernet chéo để tải về WinCE Image, nhân Linux và hệ thống tập tin. Dưới đây là bản vẽ mạch về giao diện Ethernet. Hình 1.27: Bản vẽ mạch kết nối Ethernet 2.3.12. Giao diện TVOUT Board S3C6410 có giao diện TVOUT kết nối 2-pin 2.0 J18. Dưới đây hình ảnh về giao diện TVOUT Hình 1.28: Bản vẽ mạch kết nối TVOUT 2.3.13. Giao diện tốc độ cao SPI, MMC2 và I2C Ban S3C6410 có hai giao diện SPI và một giao diện I2C. Chúng thông qua kết nối J21 và J23, J22 có chứa SPI1 và MMC2, J23 chứa SPI0, IIC và GPIO. Các SPI được tái sử dụng với MMC2 trên pin của chip chính, các khách hàng sử dụng giao diện SPI để thuận tiện gỡ lỗi WIFI và các module truyền hình kỹ thuật số. Dưới đây hình ảnh được về SPI, MMC2 và I2C Hình 1.29: Bản vẽ mạch của SPI & ICC 2.3.14. Nút cho người sử dụng và các đèn LED Có 6 nút cho người sử dụng, và đèn LED. Nút người sử dụng và đèn LED được điều khiển bởi GPIO, nó chấp nhận chế độ ngắt và chế độ truy vấn. Người dùng có thể lập trình nó theo yêu cầu. LED bật cho khi ở mức cao, đèn LED tắt khi ở mức thấp. Dưới đây là bản vẽ mạch về chúng. Hình 1.30: Bản vẽ mạch của các nút người sử dụng và đèn LED 2.3.15. GPIO và ADC Board S3C6410 có tổng cộng 186 GPIO. GPIO có thể được thiết lập như là sử dụng ghép kênh, cổng ra, cổng đầu vào, ngắt ngoài và chức năng đặc biệt. Nhưng nhóm này GPIO K, L, M, N không thể điều khiển ở chế độ ngủ, Board S3C6410 cung cấp 24 GPIO cho người sử dụng, trong đó có 11 GPIO là ở kết nối 10*2 pin tiêu chuẩn J25, có chứa 4 ADC và 1 DAC, khách hàng có thể sử dụng chúng theo yêu cầu. Các S3C6410 chip chính hoàn toàn có 8 ADC, trong đó có 4 ADC ADC4ADC7 được sử dụng để điều khiển màn hình cảm ứng. GPIO cuối cùng được sử dụng trong các địa điểm dưới đây: - 7 GPIO được sử dụng tại UART giao diện J2, - 3 GPIO được sử dụng ở kết nối LCD & TSP J9, - 1 GPIO được sử dụng tại CAMERA kết nối J10, - 2 GPIO là sử dụng tại SPIO nối J23 Trên 18 GPIO được sử dụng chủ yếu cho màn hình LCD, SPI/I2C, kết nối bus, người sử dụng cũng có thể sử dụng những GPIO cho mục đích khác. Dưới đây hình ảnh GPIO, ADC Hình 1.31: Những hình ảnh và bản vẽ mạch của GPIO và ADC 2.3.16. RTC Board được trang bị một pin năng lượng với loại 1220, khi không có nguồn điện cung cấp năng lượng RTC VDD_RTC cho S3C6410. Dưới đây là bản vẽ mạch về RTC. Hình 1.32: Bản vẽ mạch của RTC 2.3.17. 8x8 ma trận bàn phím CPU được xây dựng hỗ trợ bàn phím ma trận, các phím hạn chế tối đa là 8x8. Board S3C6410 thông qua một connector 10x2 2.0mm J20 cho bàn phím ma trận. Embest phát triển một bàn ma trận phím 4x4 mà có thể trực tiếp kết nối với các Connector J20. Bàn phím ma trận 4x4 cũng được trang bị một giao diện USB_HUB để người dùng có thể sử dụng nó để mở rộng HOST USB. Dưới đây là hình ảnh về bàn phím ma trận: Hình 1.33: Hình ảnh và mạch của bàn phím ma trận Chương 2: Xử lý hình ảnh và nhận dạng biển số xe 1. Cơ sở thuật toán xử lý hình ảnh 1.1. Xử lý ảnh là gì? Con người thu nhận thông tin qua các giác quan, trong đó thị giác đóng vai trò quan trọng nhất. Những năm trở lại đây với sự phát triển của phần cứng máy tính, xử lý ảnh và đồ hoạ đó phát triển một cách mạnh mẽ và có nhiều ứng dụng trong cuộc sống. Xử lý ảnh và đồ hoạ đóng một vai trò quan trọng trong tương tác người máy. Quá trình xử lý ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết quả mong muốn. Kết quả đầu ra của một quá trình xử lý ảnh có thể là một ảnh “tốt hơn” hoặc một kết luận. XỬ LÝ ẢNH Ảnh Ảnh “Tốt hơn” Kết luận Hình 1..Quá trình xử lý ảnh Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là đặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không gian và nó có thể xem như một hàm n biến P(c 1, c2,..., cn). Do đó, ảnh trong xử lý ảnh có thể xem như ảnh n chiều. Sơ đồ tổng quát của một hệ thống xử lý ảnh: Lưu trữ Thu nhận ảnh (Scanner, Camera,Sensor) Tiền xử lý Trích chọn đặc điểm Hệ quyết định Đối sánh rút ra kết luận Hậu xử lý Hình 1.2.Các bước cơ bản trong một hệ thống xử lý ảnh * Ảnh và điểm ảnh: Điểm ảnh được xem như là dấu hiệu hay cường độ sáng tại 1 toạ độ trong không gian của đối tượng và ảnh được xem như là 1 tập hợp các điểm ảnh. * Mức xám, màu Là số các giá trị có thể có của các điểm ảnh của ảnh Nhận dạng Nhận dạng tự động (automatic recognition), mô tả đối tượng, phân loại và phân nhóm các mẫu là những vấn đề quan trọng trong thị giác máy, được ứng dụng trong nhiều ngành khoa học khác nhau. Tuy nhiên, một câu hỏi đặt ra là: mẫu (pattern) là gì? Watanabe, một trong những người đi đầu trong lĩnh vực này đã định nghĩa: “Ngược lại với hỗn loạn (chaos), mẫu là một thực thể (entity), được xác định một cách ang áng (vaguely defined) và có thể gán cho nó một tên gọi nào đó”. Ví dụ mẫu có thể là ảnh của vân tay, ảnh của một vật nào đó được chụp, một chữ viết, khuôn mặt người hoặc một ký đồ tín hiệu tiếng nói. Khi biết một mẫu nào đó, để nhận dạng hoặc phân loại mẫu đó có thể: Hoặc phân loại có mẫu (supervised classification), chẳng hạn phân tích phân biệt (discriminant analyis), trong đó mẫu đầu vào được định danh như một thành phần của một lớp đã xác định. Hoặc phân loại không có mẫu (unsupervised classification hay clustering) trong đó các mẫu được gán vào các lớp khác nhau dựa trên một tiêu chuẩn đồng dạng nào đó. Các lớp này cho đến thời điểm phân loại vẫn chưa biết hay chưa được định danh. Hệ thống nhận dạng tự động bao gồm ba khâu tương ứng với ba giai đoạn chủ yếu sau đây: 1o. Thu nhận dữ liệu và tiền xử lý. 2o. Biểu diễn dữ liệu. 3o. Nhận dạng, ra quyết định. Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là: 1o. Đối sánh mẫu dựa trên các đặc trưng được trích chọn. 2o. Phân loại thống kê. 3o. Đối sánh cấu trúc. 4o. Phân loại dựa trên mạng nơ-ron nhân tạo. Trong các ứng dụng rõ ràng là không thể chỉ dùng có một cách tiếp cận đơn lẻ để phân loại “tối ưu” do vậy cần sử dụng cùng một lúc nhiều phương pháp và cách tiếp cận khác nhau. Do vậy, các phương thức phân loại tổ hợp hay được sử dụng khi nhận dạng và nay đã có những kết quả có triển vọng dựa trên thiết kế các hệ thống lai (hybrid system) bao gồm nhiều mô hình kết hợp. Việc giải quyết bài toán nhận dạng trong những ứng dụng mới, nảy sinh trong cuộc sống không chỉ tạo ra những thách thức về thuật giải, mà còn đặt ra những yêu cầu về tốc độ tính toán. Đặc điểm chung của tất cả những ứng dụng đó là những đặc điểm đặc trưng cần thiết thường là nhiều, không thể do chuyên gia đề xuất, mà phải được trích chọn dựa trên các thủ tục phân tích dữ liệu. 1.2. Biểu diễn ảnh Màu sắc Mắt người có thể phân biệt được vài chục màu nhưng chỉ có thể cảm nhận được hàng ngàn màu. Ba thuộc tính của một màu đó là: Sắc (Hue), Độ thuần khiết (Saturation), và độ sáng hay độ chói (Itensity). Trong xử lý ảnh và đồ họa, mô hình màu là một chỉ số kỹ thuật của một hệ tọa độ màu 3 chiều với tập các màu nhỏ thành phần có thể trông thấy được trong hệ thống tọa độ màu thuộc một gam màu đặc trưng. Ví dụ như mô hình màu RGB (Red, Green, Blue): là một đơn vị tập các màu thành phần sắp xếp theo hình lập phương của hệ trục tọa độ Đề các. Mục đích của mô hình màu là cho phép các chỉ số kỹ thuật quy ước của một số loại màu sắc thích hợp với các màu sắc của một số gam màu khác. Chúng ta có thể nhìn thấy trong mô hình màu này, không gian màu là một tập hợp nhỏ hơn của không gian các màu có thể nhìn thấy được, vì vậy một mô hình màu không thể được sử dụng để định rõ tất cả có thể nhìn thấy. Sau đây, ta xem xét một số mô hình hay được sử dụng nhất. Mô hình màu RGB (Red, Green, Bule) Màu đỏ, lục – xanh lá cây, lam – xanh da trời (RGB) được sử dụng phổ biến nhất.Những màu gốc RGB được thêm vào những màu gốc khác điều đó tạo nên sự đóng góp riêng của từng màu gốc được thêm cùng nhau để mang lại kết qaủ. Tập hợp màu nhỏ thành phần sắp xếp theo khối lập phương đơn vị. Đường chéo chính của khối lập phương với sự cân bằng về số lượng từng màu gốc tương ứng với các mức độ xám với đen là (0,0,0) và trắng (1,1,1). Blue(0,255) (0, 0, 1) (0,0,0) (1,0,0) (0,1,0) green Red Hình 1.4. Mô hình màu RGB Mô hình màu CMY (Cyan, Magenta, Yellow) Là phần bù tương ứng cho các màu đỏ, lục, lam và cúng được sử dụng như những bộ lọc loại trừ các màu này từ ánh sáng trắng. Vì vậy CMY còn được gọi là các phần bù loại trừ của màu gốc. Tập hợp màu thành phần biểu diễn trong hệ tọa độ Đề-các cho mô hình mầu CMY cũng giống như cho mô hình màu RGB ngoại trừ màu trắng (ánh sáng trắng), được thay thế màu đen (không có ánh sáng) ở tại nguồn sáng. Các màu thường được tạo thành bằng cách loại bỏ hoặc được bù từ ánh sáng trắng hơn là được thêm vào những màu tối. Black Green Blue Yellow Magenta Cyan Red Hình 1.5. Các màu gốc bù và sự pha trộn giữa chúng Khi bề mặt được bao phủ bởi lớp mực màu xanh tím, sẽ không có tia màu đỏ phản chiếu từ bề mặt đó. Màu xanh tím đã loại bỏ phần màu đỏ phản xạ khi có tia sáng trắng, mà bản chất là tổng của 3 màu đỏ, lục, lam. Vì thế ta có thể coi màu Cyan là màu trắng trừ đi màu đỏ và đó cũng là màu lam cộng màu lục. Tương tự như vậy ta có màu đỏ thẫm (magenta) hấp thụ màu lục, vì thế nó tương đương với màu đỏ cộng màu lam. Và cuối cùng màu vàng (yellow) hấp thụ màu lam, nó sẽ bằng màu đỏ cộng với lục. Khi bề mặt của thực thể được bao phủ bởi xanh tím và vàng, chúng sẽ hấp thụ hết các phần màu đỏ và xanh lam của bề mặt. Khi đó chỉ tồn tại duy nhất màu lục bị phản xạ từ sự chiếu sáng của ánh sáng trắng. Trong trường hợp khi bề mặt được bao phủ bởi cả 3 màu xanh tím, vàng, đỏ thẫm, hiện tượng hấp thụ xảy ra trên cả 3 màu đỏ, lục và lam. Do đó, màu đen sẽ màu của bề mặt. Những mối liên hệ này có thể được miêu tả bởi: C 1 R M = 1 − G Y 1 B Hình 1.6. Sự biến đổi từ RGB thành CMY Mô hình màu HSV (Hue, Saturation, Value) Các mô hình màu RGB, CMY được định hướng cho phần cứng trái ngược với mô hình màu HSV của Smith hay còn được gọi là mẫu HSB với B là Brightness (độ sáng), được định hướng người sử dụng dựa trên cơ sở nền tảng về trực giác về tông màu, sắc độ và sắc thái mỹ thuật. Hệ thống tọa độ có dạng hình trụ và tập màu thành phần của không gian bên trong mô hình màu được xác định là hình nón hoặc hình chóp sáu cạnh như trong hình 1.7. Đỉnh hình chóp là sáu cạnh khi V= 1 chứa đựng mối quan hệ giữa các màu sáng và những màu trên mặt phẳng với V= 1 đều có màu sáng. Hình 1.7. Mô hình màu HSV Sắc màu (hue) hoặc H được đo bởi góc quanh trục đứng với màu đỏ là 0 o, màu lục là 120o, màu lam là 240o (xem hình 1.7). Các màu bổ sung trong hình chóp HSV ở 180o đối diện với màu khác. Giá trị của S là một tập các giá trị đi từ 0 trên đường trục tâm (trục V) đến 1 trên các mặt bên tại đỉnh của hình chóp sáu cạnh. Sự bão hòa được đo tương đối cho gam màu tương ứng với mô hình màu này. Mô hình màu dạng hình chóp sáu cạnh này đường cao V với đỉnh là điểm gốc tọa độ (0,0). Điểm ở đỉnh là màu đen có giá trị tọa độ màu V= 0, tại các điểm này giá trị của H và S là không liên quan với nhau. Khi điểm có S= 0 và V= 1 là điểm màu trắng, những giá trị trung gian của V đối với S= 0 (trên đường thẳng qua tâm) là các màu xám. Khi S= 0 giá trị của H phụ thuộc được gọi bởi các quy ước không xác định, ngược lại khi S khác 0 giá trị của H sẽ là phụ thuộc. Như vậy một màu nào đó V= 1, S= 1 là giốg như màu thuần khiết trong mỹ thuật được sử dụng như điểm khởi đầu trong các màu pha trên. Thêm màu trắng phù hợp để giảm S (không có sự thay đổi V) tạo nên sự thay đổi sắc thái của gam màu. Sự chuyển màu được tạo ra bởi việc giữ S= 1 và giảm V tạo nên sự thay đổi ề sắc độ và tông màu tạo thành bởi việc thay đổi cả hai S và V. Mô hình màu HLS Mô hình màu HLS được xác định bởi tập hợp hình chóp sáu cạnh đôi của không gian hình trụ.Sắc màu là góc quanh trục đứng cảu hình chóp sáu cạnh đôi với màu đỏ tại góc 0o. Các màu sẽ xác định theo thứ tự giống như trong biểu đồ CIE khi ranh giới của nó bị xoay ngược chiều kim đồng hồ: Màu đỏ, màu vàng, màu lục, màu xanh tím, màu lam và đỏ thẫm. Điều này cũng giống như thứ tự sắc xếp trong mẫu hình chóp sáu cạnh đơn HSV. Hình 1.8. Mô hình màu HLS Chúng ta có thể xem mẫu HLS như một sự biến dạng cảu mẫu HSV mà trong đó mãu này màu trắng được kéo hướng lên hình chóp sáu cạnh phía trên từ mặt V= 1. Như với mẫu hình chóp sáu cạnh đơn, phần bổ sung của một màu sắc được đặt ở vị trí 180 o hơn là xunh quanh hình chóp sáu cạnh đôi, sự bão hòa được đo xung quanh trục đứng, từ 0 trên trục tới 1 trên bề mặt. Độ sáng bằng không cho màu đen và bằng một cho màu trắng. Các thiết bị thu nhận ảnh Các thiết bị thu nhận ảnh bao gồm camera, scanner các thiết bị thu nhận này có thể cho ảnh đen trắng Các thiết bị thu nhận ảnh có 2 loại chính ứng với 2 loại ảnh thông dụng Raster, Vector. Các thiết bị thu nhận ảnh thông thường Raster là camera các thiết bị thu nhận ảnh thông thường Vector là sensor hoặc bàn số hoá Digitalizer hoặc được chuyển đổi từ ảnh Raster. Nhìn chung các hệ thống thu nhận ảnh thực hiện 1 quá trình • Cảm biến: biến đổi năng lượng quang học thành năng lượng điện (giai đoạn lấy mẫu) • Tổng hợp năng lượng điện thành ảnh (giai đoạn lượng tử hóa) Xử Lý ảnh Giai đoạn lấy mẫu Người ta sử dụng bộ cảm biến hoặc máy quét để biến tín hiệu quang của ảnh thành tín hiệu điện liên tục.Phương pháp sử dụng máy quét phổ biến hơn. Máy quét sẽ quét theo chiều ngang để tạo ra tín hiệu điện của ảnh, kết quả cho ra một tín hiệu điện hai chiều f(x,y) liên tục. Dạng tín hiệu ảnh Ảnh chứa tín hiệu quang học Xét ảnh liên tục được biểu diễn bởi hàm f(x, y), gọi điểm được giữ lại theo trục x, gọi y. ∆y ∆x , ∆y ∆x là khoảng cách giữa hai là khoảng cách giữa hai điểm được giữ lại theo trục được gọi là chu kỳ lấy mẫu theo trục x và y. Giai đoạn lấy mẫu sẽ biến hàm liên tục f(x,y)→f(n ∆x ,m ∆y ). Với m,n là nguyên. Theo SHANON để đảm bảo không xảy ra hiện tượng chồng phổ, cho phép tái tạo lại ảnh gốc từ ảnh đã số hóa: - Gọi fx = - Gọi fy = 1 ∆x 1 ∆y là tần số lấy mẫu theo trục x. là tần số lấy mẫu theo trục y. Để không xảy ra hiện tượng chồng phổ thì tần số lấy mẫu phải ít nhất phải lớn hơn hoặc bằng 2 tần số cao nhất của tín hiệu ảnh. Tức là: fx>= 2fxmax fy>= 2fymax Trong đó fxmax, fymax là tần số cao nhất của tín hiệu theo trục x, y. Lượng tử hóa Ảnh sau khi lấy mẫu sẽ có dạng f(m,n) với m, n là nguyên nhưng giá trị f(m, n) vẫn là giá trị vật lý liên tục. Quá trình biến đổi giá trị f(m,n) thành một số nguyên thích hợp để lưu trữ gọi là lượng tử hoá. Đây là quá trình ánh xạ một biến liên tục u vào biến rời rạc u* thuộc tập hữu hạn [u 1, u2,..uL] xác định trước, L là mức lượng tử hoá được tạo ra. Ví dụ: + Tạo ảnh đa cấp xám thì L=256, f(m,n) = g 24 24 + Tạo ảnh 2 thì L=2 , f(m, n) = g [ ∈ [ 0, 255] ] ∈ 0, 2 24 − 1 Biểu diễn ảnh Ảnh trên máy tính là kết quả thu nhận theo các phương pháp số hoá được nhúng trong các thiết bị kỹ thuật khác nhau. Quá trình lưu trữ ảnh nhằm 2 mục đích: • Tiết kiệm bộ nhớ • Giảm thời gian xử lý Việc lưu trữ thông tin trong bộ nhớ có ảnh hưởng rất lớn đến việc hiển thị, in ấn và xử lý ảnh được xem như là 1 tập hợp các điểm với cùng kích thước nếu sử dụng càng nhiều điểm ảnh thì bức ảnh càng đẹp, càng mịn và càng thể hiện rõ hơn chi tiết của ảnh người ta gọi đặc điểm này là độ phân giải. Việc lựa chọn độ phân giải thích hợp tuỳ thuộc vào nhu cầu sử dụng và đặc trưng của mỗi ảnh cụ thể, trên cơ sở đó các ảnh thường được biểu diễn theo 2 mô hình cơ bản 2. Lập trình nhận dạng biển số xe 2.1. Khái quát Hệ thống tự động nhận diện biển số xe là hệ thống sử dụng camera để thực hiện việc kiếm tra, xác định biển số của phương tiện một cách tự động, từ đó có khả năng hỗ trợ truy vấn các thông tin chi tiết cấp cao hơn như tên chủ phương tiện, thông tin đăng ký, … Hệ thống này nhằm giải quyết các vấn đề liên quan đến an ninh, thống kê khảo sát, giám sát và theo vết… Có rất nhiều giải pháp, thiết kế hệ thống, thiết bị khác nhau để giải quyết các yêu cầu liên quan tới lĩnh vực này tùy theo từng điều kiện áp dụng: ban đêm hay ban ngày, không gian mở hay đóng, ứng dụng chuyên trách (bãi giữ xe,…), hay ứng dụng kết hợp (giám sát giao thông, hệ thống theo dõi an ninh, …), ứng dụng cục bộ hay diện rộng trên phạm vi công cộng, tính địa phương… H.1: Minh họa một hệ thống nhận dạng biển số xe 2.2. Những yêu cầu đối với hệ thống tự động nhận dạng biển số xe Từ những yêu cầu phân loại cụ thể phong phú trên ta có thể rút ra những khó khăn mà một hệ thống nhận dạng biển số xe thông thường phải vượt qua để đạt được độ chính xác chấp nhận được là : • Điều kiện tự nhiên của không gian và thời gian áp dụng hệ thống: ánh sáng, thời tiết, ...Điều này rất dễ hiểu vì rỏ ràng nhận diện biển số của một chiếc xe khi trời đang mưa bao giờ cũng khó khăn hơn khi trời nắng ráo. • Điều kiện bối cảnh: Trong một nơi mà phông nền đơn giản chỉ với các mặt phẳng thì bao giờ việc nhận diện cũng dễ hơn là một nơi mà khung cảnh hỗn độn, người xe tấp nập. • Điều kiện quy định định dạng của biển số: cái này khác nhau tùy theo quy định mỗi quốc gia, khu vực, nơi thì dùng hệ thống chử tượng hình, nơi thì chử alphabet, nơi chỉ toàn số, nơi áp dụng cả số lẫn chử, và nơi thì biển số hình chử nhật 1 hàng, nơi 2 hàng, rồi màu sắc của biển số ... • Điều kiện hiện trạng của biển số: bạn nên nhớ rằng không phải mọi biển số đều có hiện trạng mới ra lò, chúng có thể cong vênh, sơn có thể tróc, bạc màu... • Điều kiện về cách thức bố trí thiết bị: cách lắp đặt camera sẽ cho bạn một cơ hội hay thách thức trong quá trình chạy thuật toán. Tốc độ di chuyển của xe, tốc độ bắt hình của camera cũng tạo ra những vấn đề không nhỏ. 2.3. Các bước nhận dạng biển số xe * Bước 1: Chọn lựa các khung và trích chọn ảnh từ dãy tín hiệu đầu vào là đoạn phim, camera kỹ thuật số hay thiết bị ghi hình khác. Ảnh thu được sẽ truyền vào máy tính. * Bước 2: Từ ảnh đầu vào(kết quả từ Bước 1) thực hiện việc dò tìm và phát hiện ra vùng con có khả năng chứa biển số xe. * Bước 3: Từ các vùng con (kết quả có được từ Bước 2)thực hiện một số thao tác để xác định chính xác vùng con nào là vùng chứa biển số xe. Kết quả của bài toán này là một hay một tập các ảnh con chứa biển số xe. * Bước 4: Giải quyết bài toán nhận dạng ký tự cho tập kết quả từ Bước 3. Bằng cách áp dụng các phương pháp và kỹ thuật của nhận dạng ký tự. 2.3.1. Bước 1 - Đối với các hệ thống trực tiếp thu ảnh vào camera kỹ thuật số hay các thiết bị ghi hình khác, thì giải pháp là nhờ vào bộ phận tách “khung” gọi là Frame Grabber. Hoạt động của bộ phận này là: Cứ 1 khoảng “khung” định trước, hệ thống sẽ gửi ảnh đến vị trí đích mà cụ thể ở đây là máy tính. Máy tính sẽ tiếp nhận ảnh này và tiến hành xử lý. - Đối với hệ thống mà tín hiệu đầu vào là đoạn phim.Giải pháp ở đây là xây dựng một ứng dụng “Capture” vùng nhìn.Tuy nhiên, cách này chỉ là bán thủ công. Giải pháp tốt nhất vẫn là kết nối với thiết bị Frame Grabber (thiết bị dùng để thu hình từ camera Analog). - Đối với hệ thống mà tín hiệu đầu vào chỉ là ảnh thì cần trang bị một thư viện đọc và ghi ảnh. 2.3.2. Bước 2 - Phương pháp 1: “Phát triển vùng” + Ý tưởng chính: Ảnh chứa biển số xe sẽ có những vùng đồng nhất mà cụ thể là “màu trắng” và có diện tích nhất định. Như vậy ta sẽ áp dụng phương pháp phát triển vùng để tìm ra các vùng thỏa mãn đặc tính trên. - Phương pháp 2: “Phép biến đổi Hough” + Ý tưởng chính: Do biển số xe có chứa các đường viền, nên chúng ta sử dụng phép biến Hough cho việc phát hiện các vùng có đường thẳng đứng và đường thẳng ngang. Giao điểm của các đường này sẽ cho ta tọa độ của khung viền. - Phương pháp 3: “Phát hiện biên & Heuristic” + Ý tưởng chính: Áp dụng mặt nạ Sobel để dò tìm cạnh trong ảnh, kết quả là ảnh chứa tập các cạnh. Sau đó, áp dụng một số Heuristic về biển số xe như kích thước, tỉ lệ chiều cao/ chiều rộng, hoặc sử dụng một cửa sổ di chuyển trên toàn bộ tập các cạnh để tìm ra vùng có số cạnh thỏa mãn điều kiện. 2.3.3. Bước 3 - Nếu đầu vào chính xác chỉ chứa biển số xe hoặc vừa chứa biển số xe vừa chứa 1 phần duy nhất của xe. Thì việc chọn lọc trong tập hợp các vùng để đưa ra biển số xe là đơn giản. Ta chỉ cần dựa vào kích thước, chiều cao chiều rộng của vùng. - Nhưng nếu ảnh đầu còn chứa các đối tượng khác thì cần phải bổ sung thêm heuristic để chọn lọc. Một số heuristic được dùng tại đây là: + Tỉ lệ chiều cao/ chiều rộng. + Số cạnh trong từng vùng. + Tỉ lệ Pixel ảnh/ Pixel nền. + Dạng của lược đồ xám theo (Ox, Oy). - Kết quả của bài toán này là tập ảnh mà mỗi phần tử trong tập hợp chỉ chứa biển số xe. 2.3.4. Bước 4 Đối với bài toán này hiện nay đã có rất nhiều phương án giải quyết gần như hoàn hảo. Bộ nhận diện ký tự nhận đầu vào là các ảnh có ký tự riêng rẽ và cho ra ký tự văn bản tương ứng. Hiện nay mạng Neuron là hệ thống máy học được sử dụng phổ biến cho việc phân loại này, ngoài ra các giải thuật so khớp mẫu (Template Matching) cũng được áp dụng tùy theo từng tình huống. 2.4. Thuật toán chính sử dụng để nhận dạng biển số 2.4.1. Giới thiệu thuật toán Canny Mục đích của việc phát hiện biên là dùng để giảm đáng kể nội dung lưu trữ trong ảnh trong khi vẫn giữ được các tính chất cấu trúc để tiếp tục xử lý ảnh. Thuật toán Canny được phát triển bởi John F.Canny vào năm 1986, sử dụng một thuật toán đa giai đoạn để phát hiện độ rộng các cạnh trong ảnh. Mặc dù thuật toán đã được đưa ra từ lâu nhưng nó đã trở thành phương pháp chuẩn trong việc phát hiện biên của ảnh và thường xuyên được sử dụng trong nghiên cứu. Mục đích chính của John F.Canny là phát triển một thuật toán tối ưu liên quan đến các tiêu chí sau : - Dò tìm : Đạt độ xác suất phát hiện chính xác những điểm thật sự là ở biên là cao nhất và xác suất phát hiện sai là nhỏ nhất. - Vị trí : Các cạnh đã được phát hiện nên gần giống với cạnh thật nhất có thể. - Kết quả tối thiểu : Mỗi cạnh trong ảnh chỉ nên được đánh dấu một lần và nếu có thể không thể để độ nhiễu của ảnh khiến cho việc phát hiện sai cạnh cần tìm. 2.4.2. Các bước thực hiện thuật toán Canny a) Làm mịn (Smoothing) : Làm mờ ảnh để khử nhiễu b) Tìm Gradients (Finding Gradients): Cạnh được đánh dấu ở những vị trí có độ lớn Gradients là cao nhất. c) Loại bỏ những vị trí không có độ lớn Gradients là lớn nhất (Non-maximum suppression): Chỉ những vị trí có Gradients cao nhất được đánh dấu. d) Tách hai ngưỡng (Double thresholding): Những cạnh có khả năng là cạnh thật được xác định bởi ngưỡng. e) Dò cạnh với Hysteresis (Edge tracking by hysteresis): Những cạnh cuối cùng sẽ được xác định bằng việc loại bỏ tất cả các cạnh không nối liền với những cạnh rõ ràng. 2.4.3. Mô tả chi tiết từng bước của thuật toán a) Làm mịn Những bức ảnh được lấy từ camera thường có một lượng nhiễu của ảnh. Để làm cho việc xử lý tìm biên được hiệu quả thì phải loại bỏ nhiễu trong ảnh. Ở đây ta sử dụng bộ lọc Gauss để thực hiện việc làm mịn ảnh. Ví dụ về ma trận tích chập của bộ lọc Gauss với độ lệch tiêu chuẩn ϭ= 1.4 được chỉ ra trong hình H.3 và kết quả của ảnh sau khi thực hiện làm mịn với bộ lọc Gauss ở hình H.4. H.3 Ma trận tích chập a, Ảnh gốc b, Ảnh được làm mịn b, Tìm gradients H.4 Ảnh đã được loại bỏ nhiễu từ bộ lọc Gauss Thuật toán phát hiện biên Canny cơ bản dựa trên sự thay đổi về độ xám của ảnh. Vùng được phát hiện dựa trên được xác định bởi gradients của ảnh.Gradients tại mỗi pixel trong ảnh đã được làm mịn được xác định bằng mặt nạ Sobel. Bước đầu tiên là tính xấp xỉ gradients tương ứng theo 2 hướng x, y bằng việc áp dụng 2 ma trận nhân chập sau: H.5 Ma tr ận nhân chập Sobel Độ lớn gradients có thể được tính toán với khoảng cách Euclid bằng việc áp dụng định luật Pitago hoặc đôi khi sử dụng khoảng cách Mahattan để giảm thiểu các tính toán phức tạp.Ví dụ được nêu ra trong hình 6. Định lý Pitago Tính khoảng cách Mahattan Với : Gx và Gy tương ứng với gradients hướng tọa độ x, y a, Ảnh đã làm mịn b, Độ lớn gradients H.6 Độ lớn gradients được tính toán dựa vào mặt nạ Sobel Độ lớn của gradients được chỉ ra ở H.6 là những cạnh có màu trắng.Tuy nhiên độ rộng của các đường biên này khá lớn và không chỉ ra chính xác được đâu thực sự là cạnh cần tìm. Để giải quyết vấn đề này ta phải thực hiện tiếp bước tiếp theo trong thuật toán, hướng của đường biên được xác định và lưu trữ bởi công thức sau : c) Loại bỏ những vị trí không có độ lớn Gradients là lớn nhất (Non-maximum suppression) Mục đích của bước này là chuyển đổi cạnh mờ trong ảnh với độ lớn gradients thành cạnh “mỏng”.Điều cơ bản phải xử lý được ở đây đó là phải lưu giữ lại được những điểm ảnh có gradients là lớn nhất và xóa tất cả các điểm khác. Thuật toán cho mỗi pixel trong ảnh gradients: +) Hướng gradients từ góc 0o đến gần nhất góc 45o, sử dụng 8 láng giềng. +) So sánh độ đậm của cạnh tại điểm ảnh cũ với độ đậm tại điểm ảnh tương ứng với hướng gradient dương và âm. Ví dụ nếu hướng gradient là Bắc (theta = 90o) thì so sánh pixel với hai hướng Bắc và Nam. +) Nếu độ đậm của cạnh tại pixel cũ là lớn nhất thì giữ lại giá trị của cạnh đó, nếu không thì loại bỏ giá trị đó. Một ví dụ đơn giản về bước này được chỉ ra trong hình 7 (H.7). Hầu hết tất cả các pixel có gradient chỉ hướng Bắc. Chúng được so sánh với các pixel bên trên và bên dưới.Những pixel có giá trị lớn nhất được đánh dấu bằng viền trắng.Tất cả các pixels khác sẽ bị loại bỏ. H.7 Ví dụ về thuật toán 2. a, Giá tr ị Gradients b, Kết quả thuật toán H.8 Hình ảnh demo d) Tách hai ngưỡng Những điểm biên còn lại sau khi thực hiện bước trên đã được đánh dấu. Rất nhiều trong số đó đương nhiên là biên đúng của ảnh nhưng có thể vì một vài lý do như độ nhiễu của ảnh, sự khác biệt về màu thể hiện trên bề mặt. Cách đơn giản nhất để nhận ra sự khác biệt đó là dùng ngưỡng, để đưa ra cạnh nào thật sự là cạnh và lưu trữ lại. Thuật toán phát hiện biên Canny sử dụng hai ngưỡng. Điểm biên nào rõ ràng hơn mức ngưỡng cao được đánh dấu là strong. Điểm nào nhỏ hơn mức ngưỡng thấp bị loại bỏ và điểm nào nằm giữa hai ngưỡng thì được đánh dấu là “weak”. a, Kết quả biên có được sau bước 3 b, Tách hai ngưỡng H.9 Hình ảnh minh họa bước 4 e) Dò biên bằng hysteresis Cạnh “rõ ràng” (Strong edge) được giải thích là “cạnh chắc chắn”, và có thể ngay lập tức được đưa vào tập hợp biên thực của ảnh. Biên mờ được bao gồm nếu và chỉ nếu chúng được nối liền với biên rõ. Do đó, biên rõ sẽ chỉ có thể là biên trong ảnh gốc. Biên mờ có thể là biên đúng có thể là nhiễu hoặc một sự thay đổi màu. Loại thứ hai hầu như chắc chắn sẽ phân bố riêng lẻ trên toàn bộ biên của ảnh, và do đó chỉ một lượng nhỏ các biên này sẽ được đặt gần các biên rõ. Biên mờ có thể là biên đúng của ảnh nhiều khả năng do được nối liền với các biên rõ. Dò biên có thể thực hiện bằng phân tích BLOB (Binary Large OBject). Các điểm biên được chia vào trong các kết nối BLOB sử dụng 8 láng giềng. BLOB chứa ít nhất một điểm của biên rõ và được lưu giữ lại, các BLOB còn lại bị loại bỏ. Tách 2 ngưỡng Dò biên theo hysteresis Kết quả cuối cùng Chương 3: Xây dựng ứng dụng và thực nghiệm 1. Thu thập hình ảnh lên KIT ARM bằng webcam 1.1. Thư viện xử lý ảnh OpenCV 1.1.1. Giới thiệu chung thư viện OpenCV OpenCV là một thư viện thị giác máy tính mã nguồn mở của hãng Intel có thể tải về từ trang web http://SourceForge.net/Projects/opencvlibrary. Thư viện được viết bằng C và C++. Intel đưa ra phiên bản OpenCV đầu tiên vào năm 1999. Ban đầu, nó chỉ là thư viện xử lý ảnh của Intel. Về sau, tính lệ thuộc đó đã được loại bỏ và bây giờ ta có thể sử dụng OpenCV như một thư viện độc lập. OpenCV là một thư viện đa nền tảng, nó chấp nhận cả Window và Linux, hơn thế nữa gần đây là Mac OSX. Mục tiêu của OpenCV là để cung cấp cơ sở cơ bản dễ sử dụng về thị giác máy tính giúp con người có thể tạo nên những ứng dụng xử lý ảnh phức tạp một cách nhanh chóng. Các tính năng chính: Image and Video I/O: Các giao diện này cho phép ta đọc được dữ liệu ảnh từ file hoặc trực tiếp từ video. Ta cũng có thể tạo các file ảnh và video với giao diện này. Thị giác máy nói chung và các thuật toán xử lý ảnh (General computer-vision and image-processing algorithms (mid - and low level APIs)): Sử dụng những giao diện này, ta có thể thực hành với rất nhiều chuẩn thị giác máy mà không cần phải có mã nguồn của chúng. Chúng bao gồm sự dò tìm viền, đường thẳng và góc, điều chỉnh elip, lấy mẫu và những biến đổi khác nhau (Fourier rời rạc, cosin rời rạc và các biến đổi khoảng cách,). - Modul thị giác máy ở cấp độ cao: OpenCV gồm một vài tác dụng ở cấp độ cao. Ngoài việc dò tìm, nhận dạng và theo dõi khuôn mặt, nó còn bao gồm cả luồng thị giác (sử dụng camera di động để xác định cấu trúc 3D), định kích cỡ camera và âm thanh nổi. AI and machine-learning: Các ứng dụng của thị giác máy thường yêu cầu máy móc phải học ( machine learning) hoặc các hình thức trí tuệ nhân tạo khác (AI). Một vài trong số chúng là có sẵn trong gói OpenCV. Lấy mẫu ảnh và phép biến đổi: Nó thường rất tốt cho quá trình xử lý một nhóm phần tử ảnh như là một đơn vị. OpenCV bao gồm lấy tách ra, lấy mẫu ngẫu nhiên, phục chế, xoay ảnh, làm cong ảnh (warping), thay đổi hiệu ứng của ảnh. Cách thức tạo và phân tích ảnh nhị phân: Ảnh nhị phân thường xuyên được dùng trong các hệ thống kiểm tra có khuyết điểm hình dạng hoặc các bộ phận quan trọng. Sự biểu diễn ảnh cũng rất thuận tiện khi chúng ta biết rõ vật thể cần bắt. Cách thức cho tính toán thông tin 3D (methods for computing 3D information): Những hàm này rất có ích khi cần sắp xếp và xác định với một khối lập thể (with a stereo rig) hoặc với không gian nhìn phức tạp (multiple views) từ một camera riêng. Các phép toán cho xử lý ảnh, thị giác máy và biểu diễn ảnh (image interpretation): OpenCV sử dụng các phép toán phổ biến như: đại số tuyến tính, thống kê và tính toán hình học. Đồ họa: Những giao diện này giúp ta viết chữ và vẽ trên hình ảnh. Thêm vào đó những chức năng này được sử dụng nhiều trong ghi nhãn và đánh dấu. Ví dụ nếu bạn viết một chương trình cần nhận dạng nhiểu đối tượng thì nó sẽ rất có ích cho tạo nhãn ảnh (label image) với kích thước và vị trí. Phương thức GUI: OpenCV bao gồm cửa sổ giao diện của chính bản thân nó. Trong khi đó những giao diện này được so sánh giới hạn với khả năng có thể thực hiện trong mỗi môi trường. Chúng cung cấp những môi trường API đa phương tiện và đơn giản để hiện thị hình ảnh, cho phép người dùng nhập dữ liệu thông qua chuột, bàn phím và điều khiển quá trình. Cấu trúc dữ liệu và giải thuật: Với những giao diện này bạn có thể giữ lại, tìm kiếm, lưu vào cách danh mục điều khiển, các tuyển tập (cũng như các tập hợp lệnh được gọi), đồ họa và sơ đồ nhánh một cách hiệu quả. Khả năng tồn tại lâu dài của dữ liệu (Data persistence): Những phương pháp này cung cấp các giao diện một cách thuận lợi để lưu trữ các dạng khác nhau của dữ liệu vào đĩa để có thể khôi phục khi cần thiết. 1.1.2. Một số hàm thông dụng Lấy ảnh từ camera: void CvCapture* cvCaptureFromCAM( int index ); Lấy ảnh từ video: void CvCapture* cvCaptureFromFile( const char* filename ); Lấy ảnh từ một file ảnh: IplImage* cvLoadImage ( constchar* filename, intiscolor = CVLOADIMAGE COLOR ); Tạo cửa sổ để hiển thị ảnh: void cvNamedWindow ( const char*name, int flag=CV_WINDOW_AUTOSIZE ); Hàm này tạo ra một cửa sổ với tên "name" để hiển thị ảnh. Khi flag=CV_WINDOW_AUTOSIZE, hàm sẽ tạo ra cửa sổ bằng với kích thước của ảnh và người sử dụng không thể định lại kích thước của cửa sổ. Nếu flag=0, người sử dụng có thể định lại kích thước của cửa sổ. Hiển thị ảnh: void cvShowImage(const char* name, const CvArr* image); Hàm này dùng để xuất ảnh "image" ra cửa sổ người dùng được xác định bởi tên cửa sổ "name". Hàm này chỉ được sử dụng trong môi trường hỗ trợ giao diện KDE. Xóa cấu trúc lấy ảnh từ camera hoặc video: void cvReleaseCapture( CvCapture** capture ); 2. Xử lý ảnh và nhận dạng biển số xe 2.1. Các hàm xử lý và phân tích ảnh Hàm lọc ảnh: a. void cvSmooth(const CvArr* src,CvArr* dst,int smoothtype=CV; GAUSSIAN,int param1=3,int param2=0,double param3=0,double param4=0 ); - src: ảnh nguồn ; - dst: ảnh đích ; - smoothtype: phương pháp làm mượt ảnh (CV_GAUSSIAN, CV_MEDIAN, CV_BLUR_NO_SCALE, CV_BLUR…). Làm mượt ảnh để khử nhiễu, làm nổi lên các đặc tính của ảnh. b. void cvMorphologyEx(const CvArr* src, CvArr* dst, CvArr* temp, IplConvKernel* element, int operation, int iterations=1) - src: ảnh nguồn ; - dst: ảnh đích ; Toán tử morphology và các phép toán của nó giúp loại bỏ nhiễu với những ảnh có kích thước lớn mà những phương pháp khác làm việc không hiệu quả Hàm morphology cvMorphologyEx(Anh_Loc_Nhieu_Median,Anhxuly,NULL,NULL,CV_MOP_CLOS E,1); Hàm chuyển đổi màu: void cvCvtColor( const CvArr* src, CvArr* dst, int code ); - src: ảnh nguồn 8 bit, 16 bit hay 32 bit; - dst: ảnh đích có cùng dữ liệu như ảnh nguồn nhưng có thể khác số kênh màu; - code: hệ màu cần chuyển đổi (CV_RGB2HSV, CV_RGB2GRAY,…). Hàm này có tác dụng chuyển đổi hệ màu của ảnh gốc sang hệ màu khác hoặc sang ảnh xám. Hàm truy nhập giá trị màu của điểm ảnh: CvScalar cvGet2D( const CvArr* arr, int row, int col ); - arr: con trỏ chứa dữ liệu ( CvArr*), dữ liệu có thể là hình ảnh có cấu trúc IplImage; - row, col: tọa độ của điểm ảnh cần truy cập. Hàm cvGet2D() trả về cấu trúc chứa thông tin màu sắc dạng C là CvScalar được xác định như sau: typedef struct CvScalar { double val[4]; } CvScalar; Giá trị của mỗi điểm ảnh cho mỗi kênh được nằm trong val[i]. Với ảnh đen trắng, val[0] chứa độ sáng của điểm ảnh. Ba giá trị khác được đặt ở giá trị 0. Với ảnh BGR thì blue = val[0], green = val[1] và red = val[2]. Hàm chỉnh sửa giá trị điểm ảnh: void cvSet2D(CvArr*, int row, int col,CvScalar); arr: con trỏ chứa dữ liệu ( CvArr*), dữ liệu có thể là hình ảnh có cấu trúc IplImage; - row, col: tọa độ của điểm ảnh; 2 hàm trên cvGet2D và cvSet2D áp dụng khi đã xác định được tọa độ của biển số trên khung hình bằng phương pháp Adaboost (phần bao bởi viền đỏ) và cắt lấy khung hình - chứa biển số. Phục vụ cho các thao tác chỉnh sửa tiếp đó. CvScalar: giá trị màu sắc. Hàm này cho phép ta gán giá trị màu cho điểm ảnh đang xét tại tọa độ (row, col). 2.2. Các hàm xử lý biên Hàm tách sườn ảnh theo Canny void cvCanny(const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size=3) - image: ảnh ngõ vào - edges: ảnh ngõ ra - threshold1: ngưỡng đầu tiên - threshold2: ngưỡng thứ 2 Phương pháp Canny rất hiệu quả với ảnh trong điều kiện thông thường về độ sáng và độ tương phản. Tuy nhiên về bản chất phương pháp này dựa trên nguyên tắc đạo hàm nên biên nhận được không phải lúc nào cũng ổn định. Đây là một phương pháp có hiệu quả cao với ảnh có nhiễu. Hàm dò biên HoughLine CvSeq* cvHoughLines2(CvArr* image,void* line_storage,int method,double rho,double theta,int threshold,double param1 = 0,double param2 = 0); - image: ảnh ngõ vào - line_storage: con trỏ đến mảng nhớ - method: các thuật toán houghline như CV_HOUGH_STANDARD, CV_HOUGH_PROBABILISTIC, hay CV_HOUGH_MULTI_SCALE - rho,theta: độ phân giải mong muốn cho các đường - threshold: ngưỡng mong muốn Thuật toán HoughLine dùng để phát hiện ra các đường thẳng trong ảnh, áp dụng trong luận văn sinh viên dùng các đường thẳng này để tính góc lệch của biển số. 2.3. Nhận diện hình chữ nhật OpenCV cung cấp một số hàm để chúng ta có thể vẽ trực tiếp trên ảnh như tạo đường thẳng, hình vuông, hình tròn hay tùy thích. void cvPolyLine(CvArr* img, CvPoint** pts, int* npts, int contours, int is_closed, CvScalar color, int thickness=1, int lineType=8, int shift=0) - img: Đưa bức ảnh cần vẽ vào - pts: Là một mảng kiểu cvPoint nên cùng một lần gọi ta có thể vẽ được nhiều đa giác. - npts: Là một mảng dùng để chứa số đỉnh của các đa giác được vẽ. Cùng một lần vẽ ta có thể vẽ được nhiều đa giác có số đỉnh khác nhau. - is_closed: Nếu nó bằng true thì sẽ thêm một đoạn nối điểm đầu với điểm cuối lại với nhau. - contours: Số đường viền quanh đa giác 3. Khối cơ khí 3.1. Module Điều Khiển Động Cơ L298 3.1.1. Thông Số Kỹ Thuật Module L298 điều khiển động cơ DC - Vs: +5 V-35 V - I: 2A - Kích thước: 55mm * 49mm * 33mm (với các trụ cột cố định và chiều cao của tản nhiệt) - Trọng lượng: 33g 3.1.2. Sơ Đồ Nguyên Lý 3.2. STEP MOTOR 28BYJ-48 5VDC 3.2.1. Hình ảnh : Hình ?: 3.2.2. Thông số kỹ thuật Rated voltage : 5VDC Number of Phase : 4 Speed Variation Ratio : 1/64 Stride Angle : 5.625° /64 Frequency : 100Hz DC resistance : 50Ω±7%(25℃) Idle In-traction Frequency : > 600Hz Idle Out-traction Frequency : > 1000Hz In-traction Torque >34.3mN.m(120Hz) Self-positioning Torque >34.3mN.m Friction torque : 600-1200 gf.cm Pull in torque : 300 gf.cm Insulated resistance >10MΩ(500V) Insulated electricity power :600VAC/1mA/1s Insulation grade :A Rise in Temperature [...]... lý ảnh và đồ hoạ đó phát triển một cách mạnh mẽ và có nhiều ứng dụng trong cuộc sống Xử lý ảnh và đồ hoạ đóng một vai trò quan trọng trong tương tác người máy Quá trình xử lý ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết quả mong muốn Kết quả đầu ra của một quá trình xử lý ảnh có thể là một ảnh “tốt hơn” hoặc một kết luận XỬ LÝ ẢNH Ảnh Ảnh “Tốt hơn” Kết luận Hình 1 Quá trình xử lý. .. trình xử lý ảnh Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là đặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không gian và nó có thể xem như một hàm n biến P(c 1, c2, , cn) Do đó, ảnh trong xử lý ảnh có thể xem như ảnh n chiều Sơ đồ tổng quát của một hệ thống xử lý ảnh: Lưu trữ Thu nhận ảnh (Scanner, Camera,Sensor) Tiền xử lý Trích chọn... dùng có thể sử dụng nó để mở rộng HOST USB Dưới đây là hình ảnh về bàn phím ma trận: Hình 1.33: Hình ảnh và mạch của bàn phím ma trận Chương 2: Xử lý hình ảnh và nhận dạng biển số xe 1 Cơ sở thuật toán xử lý hình ảnh 1.1 Xử lý ảnh là gì? Con người thu nhận thông tin qua các giác quan, trong đó thị giác đóng vai trò quan trọng nhất Những năm trở lại đây với sự phát triển của phần cứng máy tính, xử lý. .. Trích chọn đặc điểm Hệ quyết định Đối sánh rút ra kết luận Hậu xử lý Hình 1.2.Các bước cơ bản trong một hệ thống xử lý ảnh * Ảnh và điểm ảnh: Điểm ảnh được xem như là dấu hiệu hay cường độ sáng tại 1 toạ độ trong không gian của đối tượng và ảnh được xem như là 1 tập hợp các điểm ảnh * Mức xám, màu Là số các giá trị có thể có của các điểm ảnh của ảnh Nhận dạng Nhận dạng tự động (automatic recognition),... mẫu được gán vào các lớp khác nhau dựa trên một tiêu chuẩn đồng dạng nào đó Các lớp này cho đến thời điểm phân loại vẫn chưa biết hay chưa được định danh Hệ thống nhận dạng tự động bao gồm ba khâu tương ứng với ba giai đoạn chủ yếu sau đây: 1o Thu nhận dữ liệu và tiền xử lý 2o Biểu diễn dữ liệu 3o Nhận dạng, ra quyết định Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là: 1o Đối sánh mẫu dựa... thể thay thế IIC Nhà sản xuất cũng thêm CAM_PD/GPP14 cho quản lý điện cho thiết bị máy ảnh như tắt nguồn, quản lý tiết kiệm điện năng Embest phát triển một mô-đun máy ảnh có thể kết nối trực tiếp với Board, và độ phân giải lên đến 1.3M pixel Dưới đây là hình ảnh về giao diện máy ảnh: Hình 1.21: Hình ảnh và bản vẽ mạch của giao diện máy ảnh 2.3.7 Màn hình TFT LCD và giao diện màn hình cảm ứng Các gói... “Ngược lại với hỗn loạn (chaos), mẫu là một thực thể (entity), được xác định một cách ang áng (vaguely defined) và có thể gán cho nó một tên gọi nào đó” Ví dụ mẫu có thể là ảnh của vân tay, ảnh của một vật nào đó được chụp, một chữ viết, khuôn mặt người hoặc một ký đồ tín hiệu tiếng nói Khi biết một mẫu nào đó, để nhận dạng hoặc phân loại mẫu đó có thể: Hoặc phân loại có mẫu (supervised classification),... phân tích dữ liệu 1.2 Biểu diễn ảnh Màu sắc Mắt người có thể phân biệt được vài chục màu nhưng chỉ có thể cảm nhận được hàng ngàn màu Ba thuộc tính của một màu đó là: Sắc (Hue), Độ thuần khiết (Saturation), và độ sáng hay độ chói (Itensity) Trong xử lý ảnh và đồ họa, mô hình màu là một chỉ số kỹ thuật của một hệ tọa độ màu 3 chiều với tập các màu nhỏ thành phần có thể trông thấy được trong hệ thống... hợp màu thành phần biểu diễn trong hệ tọa độ Đề-các cho mô hình mầu CMY cũng giống như cho mô hình màu RGB ngoại trừ màu trắng (ánh sáng trắng), được thay thế màu đen (không có ánh sáng) ở tại nguồn sáng Các màu thường được tạo thành bằng cách loại bỏ hoặc được bù từ ánh sáng trắng hơn là được thêm vào những màu tối Black Green Blue Yellow Magenta Cyan Red Hình 1.5 Các màu gốc bù và sự pha trộn giữa... không được sử dụng, người dùng có thể sử dụng 2 GPIO để thiết lập lại, quản lý điện năng và nhiều chức năng khác Dưới đây là hình ảnh về màn hình LCD và kết nối TC Hình 1.22:Hình ảnh của màn hình LCD và kết nối TC Hình 1.23: Bản vẽ mạch của màn hình LCD và kết nối TC 2.3.8 Phím reset Board S3C6410 gồm chip reset MAX811T Dưới đây là hình ảnh vẽ mạch Reset Hình 1.24: Hình ảnh và bản vẽ mạch của nút ... Do đó, ảnh xử lý ảnh xem ảnh n chiều Sơ đồ tổng quát hệ thống xử lý ảnh: Lưu trữ Thu nhận ảnh (Scanner, Camera,Sensor) Tiền xử lý Trích chọn đặc điểm Hệ định Đối sánh rút kết luận Hậu xử lý Hình... sống Xử lý ảnh đồ hoạ đóng vai trò quan trọng tương tác người máy Quá trình xử lý ảnh xem trình thao tác ảnh đầu vào nhằm cho kết mong muốn Kết đầu trình xử lý ảnh ảnh “tốt hơn” kết luận XỬ LÝ... hệ thống xử lý ảnh * Ảnh điểm ảnh: Điểm ảnh xem dấu hiệu hay cường độ sáng toạ độ không gian đối tượng ảnh xem tập hợp điểm ảnh * Mức xám, màu Là số giá trị có điểm ảnh ảnh Nhận dạng Nhận dạng