先说一下边缘检测吧。

这就是边缘检测效果图。
图像的边缘其实就是像素的突变,也就是左右两边的数值有较大的变化。比如说:影子边缘吧。就是白色突然过渡到了黑色的过程。检测边缘的原理也就是这样的,只要左右2边的图像数值变化够大就认为是边缘。
边缘检测的大概说明也就说这些。
准备的实现方案:
因为我手边没有视频输入端,没有视频输出端。所以,准备用串口进行图像的输入输出。
第一步,用matlab把图像变成数据,在用串口输入和输出。
第二步, 串口把图像数据送到FPGA里面,在FPGA里进行边缘检测,在用串口传输回来。
呵呵,本来是想用python的,不过python不太熟还是算了吧。用matlab吧。
还是先完成基础内容吧。
第一部分:程序部分
串口通信部分。
找了一下串口的程序以及有了。Dome里面有了。

程序是有了。来找个串口调试助手测试一下。

和程序的效果一样,

发送HELLO ALINX

目前发送和回传就都有了。
第二部分:matlab部分。
安装matlab,过程省略。

f=imread('girl.png');
if ndims(f) == 3
f=rgb2gray(f);
end
f1 = imresize(f, [200,200]);
imshow(f1)
上面附上matlab程序部分。 这样图像的数据就出来了。
双击f1

这就是图像的每个像素点数据。有了这些数据,到时候边缘检测的时候。就把这些数据串口发送到FPGA里面进行处理。
我们必须把数据导出来才方便使用啊。还是把数据用txt输出吧。这样串口就能发送出去了。

这样的话,就会有一个sobel_in.txt的文本生成。好,现在来查看一下是不是我们想要的数据。

跟matlab里面保存的数据是一样的。可以了。
第三部分:modelsim仿真