FPGA实现图像的腐蚀和膨胀
膨胀
简单来说,膨胀是将与物体解出的背景点合并到该物体中,使边界向外部扩张的过程。用卷积模版对图像进行膨胀处理,会使图像像素点周围原的像素点的像素值得到同化的效果。下面采用一个形象的比喻来说明该运算,且用0表示害虫,1表示青蛙。青蛙吃了害虫表示膨胀运算,我们用3*3像素阵列来解释:

上图只有害虫(0),固然害虫(0)幸免被吃;上图中虽然存在着8只害虫(0),但青蛙(1)的胃口太大,所以把害虫(0)全吃了;上图右只有青蛙(1),虽然没吃的,但青蛙(1)还是青蛙(1)。
关于算法的实现,可以用下式子来表示,即3*3像素的与运算:
P=P11∣P12∣P13∣P21∣P22∣P23∣P31∣P32∣P33
在HDL中,为了通过面积去换取速度,我们将上式改变如下:
⎩⎪⎨⎪⎧P1=P11∣P12∣P13P2=P21∣P22∣P23P3=P31∣P32∣P33P=P1∣P2∣P3
即通过两个时钟的算法,便能实现膨胀运算的结果。
腐蚀
腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体。形象的比喻来说明该运算,用0表示蛀虫,1表示大米。蛀虫腐蚀大米的过程便是腐蚀运算。

上图左因为蛀虫(0)的存在,将8颗大米(1)腐蚀掉了,最后剩下蛀虫(0);上图中即便只存在一个蛀虫(0),但由于蛀虫太厉害,最后大米都烂掉了;
上图右没有蛀虫(0),大米(1)一颗不烂。
关于算法的实现,可以用下式子来表示,即3*3像素的与运算:
P=P11&P12&P13&P21&P22&P23&P31&P32&P33
在HDL中,为了通过面积去换取速度,我们将上式改变如下:
⎩⎪⎨⎪⎧P1=P11&P12&P13P2=P21&P22&P23P3=P31&P32&P33P=P1&P2&P3
即通过两个时钟的算法,便能实现腐蚀运算的结果。