Thông báo

Collapse
No announcement yet.

BMP resize (FPGA)

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • BMP resize (FPGA)

    mình đang làm về đề tài bmp resize trên nền FPGA nhưng ngặt nỗi tìm hiểu chưa được sâu, ai biết rồi chỉ cho mình đường hướng với xem là phải làm như thế nào.Bắt đầu tìm hiểu từ đâu, tài liệu cần tìm là gi? Mình cảm ơn nhiều

  • #2
    Để hiểu được vấn đề này trước tiên bạn cần tìm hiểu cấu trúc file bmp. Vào Google search. Nếu bạn gặp khó khăn nhiều thì có thể liên hệ với mình. Nhưng trước hết phải tự nghiên cứu trước đi đã. Mình đã là đề tài này hơn một năm rồi. Nếu bạn cần nghiên cứu nghiêm túc thì mới liên hệ mình. Còn chỉ đề tìm hiểu cho vui thì mình khuyên bạn nên tìm đề tài khác dễ hơn mà làm. Đề tài này cần nhiều kiến thức lắm. Không phải chỉ có thuật toán thay đổi kích thước của ảnh không đâu.
    Thân chào
    nguyentrungkien31111@yahoo.com

    P/s: Không thể upload file cho bạn. File của mình lớn quá.

    Comment


    • #3
      chính vì mình làm nghiêm túc nên mình mới nhờ đến mọi người. Thầy giáo ra đề tài và mình phải hoàn thành trong vòng 9 tuần!!! đã sang tuần thứ 3 rồi. Bạn ơi giúp mình tìm hiểu với.

      Comment


      • #4
        http://en.wikipedia.org/wiki/BMP_file_format.
        Hi vọng cái này giúp ích cho bạn.

        Comment


        • #5
          Yêu cầu là gì bạn?
          Xác định rõ yêu cầu là làm được 50% rồi.
          Inputs, outputs?

          Comment


          • #6
            Yêu cầu về đề tài của mình là : thiết kế FPGA tạo ra một module phần cứng mà đầu vào là một ảnh bit map đầu ra cũng là một ảnh bit map, nhưng có thể tăng giảm kích cỡ của ảnh. thí dụ đầu vào là ảnh 6x4 đầu ra là ảnh 3x4,hoặc ngược lại đầu vào là ảnh 3x4 đầu ra là ảnh 6x4. ai biết đường hướng gì chỉ cho mình với. thanks nhiều lắm

            Comment


            • #7
              Với các file ảnh người ta quan tâm đến kích thước ảnh qua các pixel. Ví dụ Ảnh 640x480 hay 800x600 hay 1024x786. Bạn Viết 3x4, 4x6 là kích thước phóng ảnh. Cái này phụ thuộc vào máy in ảnh. Cũng coi như là hiểu ý bạn đi.
              Nhưng để thay đổi kích thước ảnh, điều đầu tiên bạn cần giữ đúng tỉ lệ của ảnh. Nếu không file ảnh kết quả sẽ bị biến dạnh: kéo giản hoặc thu hẹp. Cái này thì dễ hiểu mà.
              Hôm bữa mình đã hướng dẫn cho bạn rồi. Nhưng chắc chưa ngộ ra được. Vậy để mình thống kê lại các bước phải làm:
              B1: Load file ảnh vào kit.
              Trong bước này cần sử dụng các công cụ bao gồm: DE2 Control Panel, Notepad++ or HexEditor or Hex Workshop và Bin2Hex.
              Đầu tiên mở file ảnh ở dạng binary. Cắt bỏ đoạn Header (Xem cấu trúc file BMP để biết thêm về header). Lưu lại file đã xử lý dưới dạng file *.bin.
              Sau đó dùng Bin2Hex để chuyển file Bin --> file Hex. Nhớ phải là hex intel mới đúng.
              Đổ file HEX xuống kit bằng DE2 Control Panel.
              B2: Xử lý ảnh.
              Để giảm kích thước ảnh ta cần bỏ bớt một số điểm ảnh. Ví dụ nếu giảm kích thước đi 1/2 thì cứ cách một điểm bỏ một điểm. Giảm kích thước khác thì cần tính toán lại.
              Để tăng kích thước đơn giản là ta sẽ dãn bức hình của mình ra. Lúc đó sẽ xuất hiện các điểm đen chèn giữa các điểm ảnh. Dùng thuật toán nội suy để tính lại giá trị của các điểm đen này.
              Vậy là có thể thay đổi kích thước bức ảnh rồi.
              B3: Lưu hoặc hiển thị kết quả.
              Để hiện thị kết quả ra màn ảnh ta có thể thiết kế hệ thống giao tiếp giữa Kit DE2 và VGA. Từ đó xuất dữ liệu ra màn ảnh.
              Để lưu lại kết quả, có thể sử dụng DE2 Control Panel để đọc lại file trên KIT.
              Sau đó phục hồi header.
              Có thể mở coi file trên may tính rồi.
              Trên đây chỉ là các bước cơ bản để thực hiện đề tài của bạn thôi. Hệ thống sẽ rât phức tạp. Cần thiết kế hệ thống bằng SOPC trong và viết thêm một vài module trong Quartus II. Sau đó lập trình NIOS để thực hiện giải thuật tăng giản kích thước.
              Bạn nên bắt tay vào làm ngay bây giờ nếu chỉ đi hỏi thì sẽ không bao giờ thực hiện được đề tài này đâu.
              Thực hiện từng bước một. Đầu tiên cần tìm hiểu về cấu trúc của file BMP. Muốn thay đổi kích thước của file BMP, mà không biết file BMP cấu trúc ra sao thì sao mà làm.
              Kinh nghiệm thiết kế là phải biết phân chia thiết kế ra làm nhiều phần nhỏ. Có vậy mới không bị loop vô tận và choáng ngộp trong khối lượng công việc.

              Thêm một điều nữa để nghiên cứu đề tài này bạn mất ít nhất 6 tháng. Bạn nói bạn có 6 tuần, thời gian đó chỉ đủ để học code của người khác rồi đi báo cáo thôi. Nên biết tự lượng sức mình. Vì đây là đề tài cao cấp đó.

              Chưa tính đến việc bạn dự định xử lý trên ảnh màu hay ảnh đen trắng (gray). Ảnh Gray thì còn dễ, trên ảnh màu thì cần tính đến bộ nhớ của Kit và kích thước file. Ví dụ bộ nhớ trong của FPGA tối đa là 48KB thì bạn không thể cất được file ảnh có kích thước lớn hơn 48KB.

              Chúc bạn thành công.

              P/s: Mong Danbeo85 chỉ giáo thêm. Cái này Danbeo85 là sư phụ của mình đó. .

              Comment


              • #8
                Về lý thuyết:
                - Cấu trúc file bmp
                - Giai thuật scale ảnh

                Về thiết kế:
                + Đầu tiên là module nhận ảnh, xuất ảnh: Không biết bạn tính truyền ảnh xuống board như thế nào, ở dạng gì:
                ---- Nguyen xi file bmp, để hệ thống tự tìm phần data
                ---- Chỉ truyển phẩn data, các header được tách ra trước bằng cách nào đó (như bài của nhóc Phương.
                ---- Truyền bằng đường gì? RS232? USB? hay hardcode trong memory?
                ---- Xuất ra bằng đường gì? RS232? Màn hình?
                + Cái nữa là module scale ảnh? Các tham số để scale ảnh có tùy ý hay không? Sẽ scale bằng thuật giải nào? (Cái này mình chưa search, ko biết có bao nhiêu loại)? Về mặt này, mình khuyên bạn nên hiểu thuất giải trước, viết code C trước rồi hãy bắt tay thiết kế trên VHDL/Verilog? Viết code C trước vừa để hiểu thuật giải, vừa tạo ra được file để test code VHDL/Verilog của bạn.

                Thôi cứ làm từ từ, phần lý thuyết 1 tuần, học thuật giải scale ảnh + code C thử: 2 tuần, mô phỏng trên VHDL/ModelSim 2 tuần, tuần cuối ráng làm cái module xuất, nhận ảnh ...

                Hehe ... chúc may mắn ...

                Comment


                • #9
                  Khi bạn tìm hiểu lý thuyết về ảnh số, thì bạn sẽ biết ảnh số cũng giống như tín hiệu hai chiều được lấy mẫu. Do đó khi bạn bỏ bớt mẫu hoặc thêm mẫu đồng nghĩa với việc bạn giảm hoặc tăng tần số lấy mẫu, như thế bạn phải chắc chắn nó không vi phạm định lý Nyquist về lấy mẫu tín hiệu. (Vấn đề này thường được giải quyết bằng mạch lọc thông thấp- Chỉ có khác là nó được sử dụng trước hay sau khi thay đổi số mẫu)

                  Còn việc cắt header ảnh thì không có gì khó. Ảnh BMP thường có header là 52byte. Phần tiếp theo có thể là dữ liệu ảnh (nếu là ảnh 24bit), hoặc 1 phần giải mã màu và dữ liệu ảnh (nếu là ảnh 8bit), cái này bạn có thể tham khảo bmp format trên WIKI. Về phần cắt ảnh thì bạn có thể tự viết một chương trình để cắt header, hay dùng nodepad++, chương trình hiệu chỉnh file .hex, .... Nhưng lưu ý là trong ảnh bmp thì pixel đầu tiên (dữ liệu ảnh) là pixel cuối cùng của bức ảnh (góc phải dưới). Nạp ảnh lên KIT DE2 thì có thể dùng như cách của phuongnhoc là dùng DE2 Control Panel để đọc hoặc ghi dữ liệu vào SRAM. Còn bạn muốn truyền/nhận trực tiếp từ máy tính (giao tiếp máy tính) thì bạn có thể dùng cổng nối tiếp (nhưng tốc độ truyền chậm-nên không phù hợp lắm nếu dùng cho ảnh lớn)

                  Nếu bạn dùng SOPC builder và NIOS II thì bạn nên dùng bộ nhớ SDR SDRAM (Dùng Altera SDR SDRAM Controller IP để giao tiếp) làm bộ nhớ chương trình và dữ liệu, nó có dung lượng 8MByte - DE2 KIT. Dữ liệu ảnh sẽ là 3 dãy RGB 8bit không dấu.

                  Nếu bạn không hiển thị lên VGA thì bạn có thể sử dụng SRAM (512 KBytes cho SRAM trên KIT DE2) cho đơn giản.

                  Chúc bạn thành công.

                  Còn về phuongnhoc thì mình chưa đủ sức là "su phu" đâu. ^_^

                  Comment

                  Về tác giả

                  Collapse

                  ganyfun Tìm hiểu thêm về ganyfun

                  Bài viết mới nhất

                  Collapse

                  Đang tải...
                  X