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 P =P11|P12|P13|P21|P22|P23|P31|P32|P33 P=P11∣P12∣P13∣P21∣P22∣P23∣P31∣P32∣P33
在HDL中,为了通过面积去换取速度,我们将上式改变如下:
{P1=P11∣P12∣P13P2=P21∣P22∣P23P3=P31∣P32∣P33P=P1∣P2∣P3
\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
即通过两个时钟的算法,便能实现膨胀运算的结果。
腐蚀
腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体。形象的比喻来说明该运算,用0表示蛀虫,1表示大米。蛀虫腐蚀大米的过程便是腐蚀运算。

上图左因为蛀虫(0)的存在,将8颗大米(1)腐蚀掉了,最后剩下蛀虫(0);上图中即便只存在一个蛀虫(0),但由于蛀虫太厉害,最后大米都烂掉了;
上图右没有蛀虫(0),大米(1)一颗不烂。
关于算法的实现,可以用下式子来表示,即3*3像素的与运算:
P=P11&P12&P13&P21&P22&P23&P31&P32&P33 P =P11\&P12\&P13\&P21\&P22\&P23\&P31\&P32\&P33 P=P11&P12&P13&P21&P22&P23&P31&P32&P33
在HDL中,为了通过面积去换取速度,我们将上式改变如下:
{P1=P11&P12&P13P2=P21&P22&P23P3=P31&P32&P33P=P1&P2&P3 \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中实现图像处理中的腐蚀和膨胀操作,通过具体算法和比喻,阐述了这两种操作的基本原理及其实现过程。
1367

被折叠的 条评论
为什么被折叠?



