Xuất ra file eps từ MS Visio

File EPS (Encapsulated PostScript) là định dạng thường đường dùng cho file hình ảnh khi soạn thảo với Latex.

Tex hay Latex hỗ trợ định dạng EPS hoặc PS, mà không hỗ trợ định dạng thông dụng hiện nay là JPG hoặc JPEG, tuy nhiên Latexpdf lại ngược lại, tức hỗ trợ các định dạng JPG, JPEG mà không quan tâm đến EPS.

Đặc điểm chính của EPS là độc lập với độ phân giải, có nghĩa là bạn có thể phóng to bao nhiêu lần nhưng chất lượng hình ảnh không bị xấu đi. Bạn có thể tải trên mạng về một file EPS và một file JPEG rồi phóng to lên để xem kết quả. Vì vậy có thể bạn sẽ muốn lưu các file được xử lý bằng Photoshop hoặc GIMP bằng EPS để cho hình ảnh đẹp khi in ra. Khi bạn nhúng một hình ảnh EPS vào chương trình xử lý văn bản như MS Word hoặc OpenOffice Writer, bạn có thể thay đổi kích thước của hình mà không sợ bị bể hạt.

Vì lý do như vậy nên một số nhà xuất bản, ví dụ IEEE, chỉ chấp nhận các file có định dạng EPS, PS hoăc TIF.

Nhưng một điều đáng tiếc là các MS Visio, các chương trình vẽ Flowchart, hay các hình họa kĩ thuật khác, lại không hỗ trợ xuất file EPS. Sau một hồi lâu lục lọi trên mạng, tôi tìm thấy hai phương pháp dễ dàng thực hiện như sau.

1. Sử dụng máy in ảo – vertual printer.

Đây là phương pháp rất phổ biến. Có thể tham khảo tại  http://www.princeton.edu/~cavalab/tutorials/public/PostscriptPrinterTutorial.pdf.

Phương pháp này đơn giản và có thể sử dụng trên nhiều nền tảng khác nhau, tuy nhiên quá trình cài đặt khá phức tạp.


2. Dùng chương trình xử lý ảnh GIMP.

Ngoài ra chúng ta có thể sử dụng chương trình xử lý hình ảnh GIMP mà không cần phải cài đặt thêm các driver khác. GIM có thể tải về miễn phí, chạy trên nền tảng Java nên có thể hoạt động trên hầu hết các hệ điều hành.

Để tạo file EPS bằng GIMP, có thể thực hiện các bước như sau:

  • Từ VISIO, hoặc các chương trình khác, chọn save as, hoặc export để tạo file ảnh. Tôi thường chọn định dạng TIF, tuy dung lượng lớn nhưng chất lượng cao.
  • Mở file TIF với GIMP, có thể tùy chọn chỉnh sửa file ảnh này. Rồi sau đó xuất file EPS.

Một đặc điểm nữa để tôi lựa chọn GIMP là có thể chỉnh sửa file EPS, hoặc PS với tính chuyên nghiệp cao giống như Photoshop.


Xây dựng bộ lọc Kalman đơn giản

Bộ lọc Kalman là một bộ lọc đệ quy để ước lượng trạng thái của hệ thống tuyến tính, và cả hệ thống phi tuyến khi áp dụng phép ước lượng phi tuyến sang tuyến tính.

Bộ lọc Kalman được ứng dụng rất nhiều trong lĩnh vực kĩ thuật, đặc biệt là lĩnh vực điều khiển. Và dĩ nhiên lý thuyết của bộ lọc hoàn toàn không đơn giản, nhưng may mắn là có thể tìm thấy trên mạng vô số tài liệu về bộ lọc này cũng như sách, báo.

Dưới đây là bài viết tôi thực hiện khi thực tập đại học, trình bày rất đơn giản về bộ lọc Kalman, cũng như một ứng dụng nho nhỏ của bộ lọc này, nhằm mục đích loại bỏ tín hiệu nhiễu từ cảm biến. Chương trình được mô phỏng bằng Matlab.

Các giá trị đọc được từ cảm biến thường chứa nhiễu, tác động bởi nhiều nguồn khác nhau, như nhiễu quá trình, nhiễu nhiệt, nhiều từ bộ biến đổi ADC… Giá trị đọc được do đó dao đông ngay cả khi giá trị thực là hằng số. Ví dụ đơn giản như một cảm biến phao trên mặt nước của một bình chứa, gợn sóng làm giá trị thu được dao động xung quanh vị trí cân bằng ngay cả khi mực nước không đổi. Ngay lúc này bạn có thể nghĩ rằng chỉ cần lấy giá trị trung bình của các giá trị đọc về là ổn. Đúng vậy, cộng trung bình là phương pháp rất đơn giản, và khá hiệu quả. Còn Kalman là bộ lọc thông thấp bậc nhất trong trường hợp này.

Và trong trường hợp có nhiều giá trị liên quan đến đại lượng cần ước lượng được sử dụng, bộ lọc Kalman có thể kết hợp nhiều giá trị đó lại với nhau, cho ra kết quả chính xác hơn. Ví dụ như nếu biết thêm được lưu lượng nước vào và ra của bình chứa thì tổng cộng có 2 giá trị liên quan đến mực nước, là giá trị mực nước và lưu lượng vào ra, kết quả sẽ khả quan hơn với bộ lọc Kalman.

Bài viết cũng có bàn luận đến vấn đề khi giá trị mong muốn thay đổi, thì cần có sự thỏa hiệp giữa tốc độ bám đuổi của giá trị ước lượng với giá trị thực với độ dao động của giá trị ước lượng. Tức là khi muốn giá trị ước lượng thay đổi nhanh thì giá trị ước lượng không phẳng lắm, còn muốn giá trị ước lượng được phẳng hơn thì nó sẽ ít có khả năng bám theo sự thay đổi nhanh của giá trị thực tế.

R_1

 

R_01_gia_tri_dau_vao_thay_doi  

Điểm màu xanh là giá trị đọc được trực tiếp từ cảm biến, đường màu đỏ là giá trị ước lượng với bộ lọc Kalman bậc 1.


Chương trình thực hiện bộ lọc bậc 1 rất đơn giản, có thể thực hiện đễ dàng trên các chíp VĐK 8 bít, có thể sử dụng để xử lý các tín hiệu từ cảm biến để cho kết quả tốt hơn.

Nhận dạng giọng nói, luận văn tốt nghiệp

Đề tài nhận dạng âm thanh hay tiếng nói là một đề tài khá hay về mặt học thuật. Theo xu hướng hiện tại ở các trường đại học của ta đang có xu hướng sử dụng đề tài này với hai mục đích chính

  • Tìm hiểu và ứng dụng các thuật toán sử dụng trí tuệ nhân tạo, như mạng Neutron, HMM, hay kết hợp. Thường được tiến hành trên PC. Mang lại kết quả rất tốt, nhận dạng được nhiều từ, và có thể là cả câu.
  • Nhúng các thuật toán vào hệ nhúng. Mục đích là để nhúng một thuật toán nhận dạng vào các chip rời, như MCU hay DSP, đi kèm là thiết kế phần cứng liên quan. Dạng này đang được sử dụng khá nhiều để làm luận văn tại bộ môn Điều Khiển, ĐH BK TpHCM. Do khả năng giới hạn phần cứng nên thường những thuật toán đơn giản được áp dụng, số từ nhận dạng được không nhiều, và thường là từ đơn.

Luận văn tốt nghiệp của tôi, năm 2009, tại bộ môn Điều Khiển, ĐHBK, là thực thi một thuật toán nhận dạng trên nền tảng DSP TMS320C2812 của Texas Instruments, sử dụng kit eZdsp2812. Những ưu điểm chính của dòng DSP của TI có thể kể đến như: tốc độ hoạt động cao (150Mhz), bộ ADC độ phân giải lớn và tốc độ chuyển đổi rất cao 12.5msps, hỗ trợ các thư viện DSP. Đặc biệt là hỗ trợ debug thời gian thực và vẽ đồ thị dữ liệu thời gian thực (tín hiệu âm thanh trực tiếp từ bộ ADC) giảm thiểu thời gian lập trình rất nhiều.

Thời điểm tôi làm luận văn cũng có nhiều bạn làm cùng đề tài, dựa trên dsPIC (cái này đang nóng trên thị trường do sự hỗ trợ của điễn đàn picvietnam.com), và một cách công bằng mà nói, dòng DSP của TI mạnh hơn hẳng của Microchip nhiều. Những đề tài làm với dsPIC hầu hết đều không thành công lắm.

Trong luận văn, tôi chọn thuật toán MFCC để tạo các mẫu đặc trưng và VQ để nhận dạng. Lý do chính là VQ phù hợp với phần cứng của hệ nhúng (không nặng nề như HMM hay mạng Neutron), và cho kết quả chấp nhận được, nhận dạng khoảng 6 từ với độ chính xác khá cao.

 

Cũng là luận văn năm 2009, Hà Thúc Phùng sử dụng HMM để điều khiển các thiết bị ngoại vi (điều khiển qua cổng COM). Chương trình thực thi tốt, có thể nhận dạng được một câu dài, độ chính xác rất cao. Chương trình được viết bằng Matlab trước tiên, sau đó dịch và chạy với ngôn ngữ VB 6.0 (do Matlab thường có vấn đề với cổng COM). Luận văn của Phùng miêu tả rất kĩ cơ chế làm việc của các thuật toán nhận dạng, là một tài liệu đáng giá cho những ai đang làm với đề tài này.