Chương trình mô phỏng các giải thuật cơ bản của môn Xử Lý Ảnh - Đồ án Đại học, Cao đẳng CNTT

Saturday, March 24, 2018
Edit this post


Đây là một đề tài dành cho sinh viên Đại học, Cao đẳng nhằm cụ thể hóa các giải thuật xử lý ảnh được viết bằng ngôn ngữ lập trình Java. Đồ án này ban đầu được xây dựng trong Netbeans, giờ đây chúng tôi đã cải tiến để nó có thể được import dễ dàng vào Eclipse Oxygen 3 cũng như tương thích tốt với JDK 1.8.


Demo các chức năng chính của chương trình vui lòng xem ở video dưới đây:


Sơ qua về một phần tài liệu hướng dẫn:

Cấu trúc của một file hình ảnh số:
▸Một bức hình là một mảng dữ liệu 2 chiều (2D Array) tập hợp của nhiều pixel.
▸Mỗi pixel chứa 3 số nguyên có giá trị từ 0 đến 255.
▸Một pixel có 3 giá trị này bằng nhau sẽ có màu xám.
▸Nếu các giá trị này càng lớn, pixel càng sáng, ngược lại, pixel càng tối.


+-----+-----+-----+-------+
| R   | G   | B   | Color |
+-----+-----+-----+-------+
| 0   | 0   | 0   | Black |
| 0   | 0   | 255 | Blue  |
| 0   | 255 | 0   | Green |
| 255 | 0   | 0   | Red   |
| 0   | 255 | 255 | Cyan  |
| 255 | 255 | 255 | White |
+-----+-----+-----+-------+


Mô hình Raster:
▸Đây là cách biểu diễn ảnh thông dụng nhất hiện nay, ảnh được biểu diễn dưới dạng ma trận các điểm ảnh. Thường thu nhận qua các thiết bị như camera, scanner. Tùy theo yêu cầu thực tế mà mỗi điểm ảnh được biểu diễn qua 1 hay nhiều bit.
▸Mô hình Raster thuận lợi cho việc hiển thị và in ấn. Ngày nay công nghệ phần cứng cung cấp những thiết bị thu nhận ảnh Raster phù hợp với tốc độ nhanh và chất lượng cao cho cả đầu vào và đầu ra.

Để lấy dữ liệu của một file hình:
Trước tiên chúng ta cần xây dựng lớp ImagePixel chứa 3 giá trị R, G, B:

public class ImagePixel {
 int r, g, b;
 public ImagePixel (int r, int g, int b) {
  this.r = r;
  this.g = g;
  this.b = b;
 }
}

Sau đó chúng ta tiếp tục xây dựng phương thức getImageData() để lấy toàn bộ dữ liệu của các pixel:
BufferedImage bImg;

public ImagePixel[][] getImageData() { 
 Raster raster = bImg.getRaster(); 
 ImagePixel[][] data = new ImagePixel[r.getHeight()][r.getWidth()];
 int[] temp = new int[3];
 for (int row = 0; row < r.getHeight(); row++) {
  for (int col = 0; col < r.getWidth(); col++) {
   temp = raster.getPixel(col, row, temp);
   ImagePixel pixel = new ImagePixel(temp[0], temp[1], temp[2]);
   data[row][col] = pixel;
  }
 }
 return data;
}

Để cài đặt dữ liệu của một file hình:
Chúng ta sẽ sử dụng lớp WritableRaster để làm việc này:

BufferedImage bImg;

public void setData(ImagePixel[][] data) {
 WritableRaster wRaster = this.bImg.getRaster();
 int[] temp = new int[3];
 for (row = 0; row < wRaster.getHeight(); row++) {
  for (col = 0; col < wRaster.getWidth(); col++) {
   temp[0] = data[row][col].r;
   temp[1] = data[row][col].g;
   temp[2] = data[row][col].b;
   wRaster.setPixel(col, row, temp);
 }
}

... và còn rất nhiều những thông tin khác nữa trong bộ đề tài này.

.
Xin vui lòng chờ đợi
Dữ liệu bài viết đang được tải về

💻Nhận dạy online 1 kèm 1 Automation Test từ cơ bản tới nâng cao (From Zero to Hero) 😁😁😁
Lộ trình gồm 3 phần:
1) Kỹ thuật lập trình và tư duy lập trình cơ bản
2) Nhập môn kiểm thử (Manual Test)
3) Kiểm thử tự động (Automation Test) + Chuẩn bị cho phỏng vấn
* Lộ trình chi tiết: Xem tại đây

🎓Đối tượng người học:
- Những bạn bị mất gốc căn bản môn lập trình.
- Những bạn muốn theo con đường kiểm thử (testing), đặc biệt là kiểm thử tự động (Automation Test).

🦘Người giảng dạy:
- Mình sẽ là người trực tiếp hướng dẫn.
- Nếu là các vấn đề ngoài chuyên môn hoặc sở trường, mình sẽ nhờ các anh chị em khác cũng làm trong ngành.

🤓Giới thiệu:
- Mình đã có hơn 10 năm kinh nghiệm làm IT ở cả trong và ngoài nước. Trong đó 3 năm đầu là làm lập trình viên Java, sau đó bén duyên với mảng Automation Test và theo nghề tới tận bây giờ. Mình được đào tạo chính quy về IT từ một trường Đại học danh tiếng ở TP.HCM (hệ kỹ sư 4 năm rưỡi), có chứng chỉ ISTQB, có thể giao tiếp tốt bằng tiếng Anh và có kinh nghiệm làm việc thực tế ở cả 2 mảng Outsource và Product. Title chính thức của mình là QA Automation Engineer, tuy nhiên, mình vẫn làm những dự án cá nhân chuyên về lập trình ứng dụng như Học Tiếng Anh StreamlineSách Nhạc. Mình là người có thái độ làm việc chuyên nghiệp, chăm chỉ và luôn nhiệt tình trong công việc.

💵Chi phí và hình thức thanh toán:
- Các bạn vui lòng liên hệ qua email songtoigianvn@gmail.com (email, chat, hoặc call) để book nội dung và khung giờ học (từ 8h tối trở đi).
- Mức phí: 150.000đ/buổi, mỗi buổi 60 phút.
- Lộ trình From Zero to Hero: 4.350.000đ (29 buổi).
- Bạn có thể học riêng và đóng tiền theo từng phần nếu muốn.
- Có thể học trước 1-2 buổi trước khi quyết định đi full lộ trình hoặc từng phần.
- Thanh toán qua Momo, chuyển khoản v.v...
BÌNH LUẬN
© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...