FPGA实现图像的膨胀和腐蚀

FPGA实现图像的腐蚀和膨胀

膨胀

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

FPGA实现图像的膨胀和腐蚀_第1张图片

         上图只有害虫(0),固然害虫(0)幸免被吃;上图中虽然存在着8只害虫(0),但青蛙(1)的胃口太大,所以把害虫(0)全吃了;上图右只有青蛙(1),虽然没吃的,但青蛙(1)还是青蛙(1)。

         关于算法的实现,可以用下式子来表示,即3*3像素的与运算:

P = P 11 ∣ P 12 ∣ P 13 ∣ P 21 ∣ P 22 ∣ P 23 ∣ P 31 ∣ P 32 ∣ P 33 P =P11|P12|P13|P21|P22|P23|P31|P32|P33 P=P11P12P13P21P22P23P31P32P33

         在HDL中,为了通过面积去换取速度,我们将上式改变如下:

{ P 1 = P 11 ∣ P 12 ∣ P 13 P 2 = P 21 ∣ P 22 ∣ P 23 P 3 = P 31 ∣ P 32 ∣ P 33 P = P 1 ∣ P 2 ∣ P 3 \begin{cases} P1=P11|P12|P13\\ P2=P21|P22|P23 \\ P3=P31|P32|P33 \end{cases}\\ P =P1|P2|P3 P1=P11P12P13P2=P21P22P23P3=P31P32P33P=P1P2P3
即通过两个时钟的算法,便能实现膨胀运算的结果。

腐蚀

         腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体。形象的比喻来说明该运算,用0表示蛀虫,1表示大米。蛀虫腐蚀大米的过程便是腐蚀运算。

FPGA实现图像的膨胀和腐蚀_第2张图片
上图左因为蛀虫(0)的存在,将8颗大米(1)腐蚀掉了,最后剩下蛀虫(0);上图中即便只存在一个蛀虫(0),但由于蛀虫太厉害,最后大米都烂掉了;
上图右没有蛀虫(0),大米(1)一颗不烂。

         关于算法的实现,可以用下式子来表示,即3*3像素的与运算:

P = P 11 & P 12 & P 13 & P 21 & P 22 & P 23 & P 31 & P 32 & P 33 P =P11\&P12\&P13\&P21\&P22\&P23\&P31\&P32\&P33 P=P11&P12&P13&P21&P22&P23&P31&P32&P33

         在HDL中,为了通过面积去换取速度,我们将上式改变如下:

{ P 1 = P 11 & P 12 & P 13 P 2 = P 21 & P 22 & P 23 P 3 = P 31 & P 32 & P 33 P = P 1 & P 2 & P 3 \begin{cases} P1=P11\&P12\&P13\\ P2=P21\&P22\&P23 \\ P3=P31\&P32\&P33 \end{cases}\\ P =P1\&P2\&P3 P1=P11&P12&P13P2=P21&P22&P23P3=P31&P32&P33P=P1&P2&P3

即通过两个时钟的算法,便能实现腐蚀运算的结果。

你可能感兴趣的:(FPGA数字图像处理)