Posts

Image
 Image Processing_5 Demosaic Như ta đã biết, hình ảnh sau khi qua sensor vào hệ thông sẽ dưới dạng Bayer Matrix RGB. Túc là mỗi pixel sẽ mang thông tin của 1 màu duy nhất Red hoặc Green hoặc Blue. Một bức ảnh hoàn chỉnh lại được tạo lên từ các pixel, mỗi pixel sẽ là kết quả của sự trộn lẫn của ba màu cơ bản Red/Green/Blue. Như vậy từ ma trận RGB ban đầu ta cần tạo ra một ma trận ảnh mới với mỗi pixel cần có đủ thông tin của ba màu R/G/B. Hình dưới là mô tả đơn giản cho xử lý Demosaic. Demosaic processing  Việc tính toán nội suy nhằm tái hiện các ma trận màu có thể thực hiện theo nhiều cách. Cách đơn giản nhất, ta có thể lấy trung bình cộng của các điểm ảnh xung quanh để sinh ra điểm ảnh khuyết thiếu. Cách tính toán này khá đơn giản và tiết kiệm thời gian. Tuy nhiên khi tái hiện ảnh sẽ có các nhiễu gọi là zipper noise và xuất hiện các màu không mong muốn. Hiện tượng này rất dễ nhận ra ở những khu ảnh có độ thay đổi màu sắc liên tục như hàng rào, áo kẻ... Ảnh thật (trái) vs ảnh ...

RTL design_blocking and non blocking

Image
Thiết kế mạch logic bằng lập trình thường được gọi tắt là RTL code (Register Transfer Level code). Thiết kế này được viết bằng ngôn ngữ HDL (hardware description language) bao gồm hai hệ ngôn ngữ là Verilog và VHDL. Verilog thì gần với software và hiện được dùng phổ biến hơn. Các bái viết sẽ sau này sẽ diễn đạt và giải thích trên ngôn ngữ Verilog. Blocking vs Non Blocking (source: Internet) Cách viết Blocking và Non Blocking, sự khác biệt là gì? Đây là câu hỏi rất hay được dùng trong các cuộc phỏng vấn.  1. Về syntax:     Blocking biểu thị là dấu "="     Non blocking biểu thị là "<=" 2. Về hoạt động:     ●Blocking: giống như software, câu lệnh sẽ được xảy ra tuần tự từ trên xuống dưới.               Ví dụ:                          a = 5;                       b = 7;  ...

Image Processing 5_ Chỉnh sửa màu trắng. (WB = white balance)

Image
 Cũng tương tự như phần điều chỉnh màu đen, do nhiều yếu tố sản xuất, vật liệu nên dẫn đến sự không đồng đều của đầu ra sensor. Như ta biết máu trắng sẽ là màu cho giá trị lớn nhất trong thang Gray, ví dụ với 8 bit thì sẽ có giá trị là 255. Tức là cả 3 đầu ra của sensor R,G,B đầu sẽ mang giá trị 255.  Nhưng do sai khác nên đầu ra của 3 giá trị này sẽ khác nhau. Để hiệu chỉnh việc này, người ta sẽ tính toán và cho nhân các giá trị đầu ra với một hệ số để đạt giá trị mong muốn.     R' (after white balance) = R * gainR     B ' (after white balance) = B * gainB     G ' (after white balance) = G * gainG Việc xác định các giá trị gainR, gainB, gainG có nhiều cách khác nhau, cũng có thể sẽ do nhà sản xuất sensor cung cấp, có thể dùng thuật toán tìm các điểm trắng rồi tự động tính toán giá trị gain. Tại sao việc điều chỉnh màu trắng lại quan trọng? Mắt người rất nhạy cảm với sự thay đổi độ sáng, với sự thừa hay thiếu độ sáng sẽ dẫn đến các cảm nhận khác n...

Fpga_start from 0

Image
 Fpga là gì?  Cái này các bạn tra wiki để biết rõ thêm chi tiết. Với mình nôm na thì fpga cũng là một loại chip điều khiển, ta có thể lập trình cho nó hoạt động theo ý mình muốn. Tất nhiên chưa bàn đến ngôn ngữ, tính năng... Song song với FPGA bạn sẽ hay được nghe thêm từ khoá Asic. Vậy Asic là gì? Theo ngôn từ nôm na của tôi thì nó cũng là một loại chip điều khiển nhưng ta không thể lập trình cho nó một cách tuỳ tiện. Các tính năng của nó đã được cố định, bạn chỉ có thể thay đổi nội dung các thanh ghi điều khiển để chip chuyển các mode hoạt động. Vậy tại sao FPGA lại liên quan đến Asic? Có nhiều lý do nhưng theo mình có 3 lý do chính sau: 1. Cả 2 đều hoạt động và hình thành ở mức cổng logic. ( flip flop, and, or...) 2. Đều lập trình trên ngôn ngữ Hardware Description Language. Verilog hoặc VHDL. 3. Trong quy trình sản xuất Asic, người ta hay dùng FPGA để kiểm thử hoạt động của thiết kế. Giá thành của FPGA thường cao hơn vì nó là một chip mang dung lượng số cổng logic lớn, giú...

Image Processing_4 Chỉnh sửa độ tối

Image
Bài này chúng ta nói về việc chỉnh sửa độ tối của ảnh.  Để tránh nhầm lần, mình sẽ nói qua ngắn gọn lại bài trước (sửa lỗi pixel). Bài trước là chúng ta nói về việc chỉnh sửa các pixel bị chết cố định, tức là các pixel luôn mang màu trắng hoặc đen trong bất cứ điều kiện nào. Bài này sẽ tập trung vào việc chỉnh sửa độ tối của toàn diện bức ảnh. Vấn đề: Như ta đã biết, khi ánh sáng đi qua cảm biến sẽ được chuyển thành các tín hiệu điện áp. Với màu đen là mức tối nhất thì điện áp ra sẽ là bằng 0 trong điều kiện lý tưởng. Tuy nhiên do quy trình sản xuất, nhiễu do các thiết bị điện khi hoạt động cùng lúc, nhiễu nhiệt có thể dẫn đến sai số. Minh họa chênh lệch giá trị  Việc chênh lệch độ tối sẽ dẫn đến sai khác màu sắc của hình ảnh.  Cách khắc phục: Thường trong các thiệt bị sẽ có một phần cảm biến được dùng cho việc hiệu chỉnh độ tối/ độ sáng. Trong trường hợp này các sensor này sẽ được chạy trong điều kiện không ánh sáng, và thiết bị sẽ đo xem khi đó offset chênh lệch. Sau đó...

Image processing_3 Sửa lỗi pixel

Image
Như đã trình bày ở các bài trước, ma trận màu sẽ được sinh ra khi ánh sáng chạy qua các cảm biến màu. Tất nhiện trong điều kiện lý tưởng như cảm biến tốt, thiết bị tốt...thì ta sẽ có các kết quả như mong muốn. Tuy nhiên trong thực tế không phải vậy. Trong quá trình sản xuất có thể có các lỗi như lắp ráp, bụi...có thể gây ra vài khiếm khuyết sẽ dẫn đến một số pixel bị chết. Các pixel này sẽ luôn có màu trắng hoặc luôn có màu đen. Đây là việc rất khó để đảm bảo thiết bị đạt 100% độ chuẩn. Về cơ bản các nhà sản xuất cảm biến sẽ thực hiện kiếm tra sau khi sản xuất. Kết quả kiểm tra sẽ cho thông tin về vị trí các pixel bị chết này. Tiếp theo đó các công ty sử dụng sensor cũng sẽ kiểm tra và tìm các điểm chết này dựa trên các user case của họ. Như vậy chúng ta sẽ có 2 danh sách về các điểm chết này:     1. Danh sách được tạo ra bời nhà sản xuất cảm biến.     2. Danh sách được tạo ra bởi người dùng. Các danh sách này sẽ lưu giữ thông tin vị trí mà các pixel chết t...

Xử lý ảnh_2 Các bước xử lý tín hiệu trong camera số

Image
Trong phần này mình sẽ trình bày về flow xử lý ảnh bên trong máy ảnh. Đây là flow chung, các công ty có thể có bí quyết riêng và flow có chút khác biệt. Nhưng về cơ bản sẽ không khác nhiều với flow này. Flow of signal processing inside digital camera Nhìn qua tên các block các bạn có thể hiểu ngay các bước được thực hiện với mục đích gì :D. Mình cũng sẽ viết các bài giải thích từng block riêng biệt sau. Trong phần này mình sẽ tập trung nói về phần cảm biến hình ảnh (image sensor). Như đã nói ở phần trước, image sensor là phần đảm nhận việc chuyển tín hiệu ánh sáng sang tín hiệu điện. Có 2 loai cảm biến ảnh phổ biến là CCD (charged-couple device) và CMOS (active pixel sensor). Cả hai đều được làm trên công nghệ MOS (mình cũng không rõ cái này lắm). CMOS thường được dùng trong các thiết bị nhỏ gọn như di động, tablet vì ưu việt trong điện năng, giá rẻ và kích thước nhỏ...CCD thường được dùng trong các thiết bị camera chuyên nghiệp với độ phân giải cao. Trước khi đến các cảm biển ảnh, n...