基于RAM的几何变换——平移

基于RAM的几何变换——平移

一、平移的基本概念

  平移的概念很好理解,但是在具体操作中可能会涉及到两个问题:

  1. 平移量有正数也有负数,涉及到Verilog语法中的有符号数处理
  2. 平移会导致部分像素超出我们的显示范围,对这部分的像素应当做丢弃处理

二、MATLAB实现

  实现代码和实验结果如下所示:

%--------公式法平移-------------
clc;
clear all;
RGB = imread('house.png');

[ROW,COL,N] = size(RGB);

% 定义一个0~255区间的三通道的图像矩阵
pann = uint8(zeros(ROW,COL,N));

% 平移
for i = 1:ROW
    for j = 1:COL
        for k = 1:N
            if(((i+20)>COL) || ((j-50)<1))
                x = 1;
                y = 1;
            else
                x = i+20;
                y = j-50;
            end
            z=k;
            pann(x,y,z) = RGB(i,j,k);
        end
    end
end

subplot(1,2,1),imshow(RGB);      title('原图');
subplot(1,2,2),imshow(pann); title('平移');

9.1三、FPGA实现

  FPGA部分的实现代码仅仅修改了之前 isp_rota 中的部分,将按键控制的四个模式返回的坐标值进行了相应的平移算法移植。值得注意的是,对人眼识得的坐标原点和VGA的坐标原理有所区别,再有就是坐标平移之间的关系

  实验结果如下:

9.2

  实验结果符合预期。

参考资料:[1]咸鱼FPGA

posted @ 2024-04-17 21:36  齐迩  阅读(3)  评论(0编辑  收藏  举报