图像的放大与缩小

您所在的位置:网站首页 simulink怎么放大和缩小图像 图像的放大与缩小

图像的放大与缩小

2023-11-23 03:04| 来源: 网络整理| 查看: 265

一.项目起源

这是我们专业一门课的课程设计,总共分为三个模块,先开源其中的一部分;该模块与上一篇HDMI显示是同一个项目的一部分,如今,在我自己完成的基础上,对此进行分享,同时附上代码,代码我已经进行了上板验证,可以直接使用;

HDMI显示链接:

HDMI接口介绍及其代码_不想上体育课的博客-CSDN博客

二.实现方式

该模块使用增加或减少像素点的方式进行图像的放大与缩小;

假设原图如下:

 放大一倍如下:将像素点进行复制,同理,两倍放大需要进行像素点的行列复制四次,这种方法适用于整数倍放大;

 如何实现缩小?如图与原图进行对比:隔行,列进行降采样,同理,可得到其他缩小倍数;

 三.部分主要代码实现讲解

(1)由于图像是从rom中读取的,总的像素不会变,所以需要进行额外赋值

(2)控制图像的显示大小,multiple是一个图像放大与缩小控制信号,由上一级的按键来控制(使用了两个按键,一个控制放大,一个控制缩小);

 (3)图像显示区域控制;

(4)图像放大与缩小实现代码:用来进行行像素点的计数,同理,代码中相似的那一部分为列计数;

四.整体代码

(1)放大与缩小实现模块:

//************************************************************************** // *** 名称 : hdmixs_display // *** 作者 : 不想上体育课 // *** 博客 : https://blog.csdn.net/m0_47220307?type=blog // *** 日期 : 2022.09 // *** 描述 : 显示图像区域设置 //************************************************************************** `timescale 1ns / 1ps module hdmixs_zoom( input wire clk_out1 , input wire rst_n , input wire [10:0] x_pixel , input wire [10:0] y_pixel , input wire [2 :0] multiple , output reg [9:0 ] IMG_HEIGHT, output reg [9:0 ] IMG_WIDTH , output reg rom_rd_en , output wire [23:0] rom_addr ); reg dis_flag; reg [1:0] cnt_mu ; reg [1:0] cnt_mu_col; //reg [9:0] IMG_HEIGHT; //reg [9:0] IMG_WIDTH ; reg [9:0] pos_x0; reg [9:0] pos_y0; reg [9:0 ] cnt_col; reg [9:0 ] cnt_row; reg [9:0 ] PIC_X ; reg [9:0 ] PIC_Y ; wire add_cnt_row; wire end_cnt_row; wire add_cnt_col; wire end_cnt_col; wire rom_rd_en1; wire start_flag; wire [32:0] IMG_TOTAL; wire [9:0 ] img_height; wire [9:0 ] img_width ; //assign dis_flag = ((y_pixel == pos_y0 + 1'b1) && (x_pixel == pos_x0)) ? 1'b1 : 1'b0; always@(posedge clk_out1 or negedge rst_n) if(rst_n == 1'b0) dis_flag


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3