欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

填充去噪算法

程序员文章站 2024-03-18 13:09:22
...

填充功能其实就是画图里面的油漆桶工具

具体原理如下:

二值化你要去噪的图片,然后对你想填充的颜色执行(这里用白色代替)填充,但是每次填充的颜色不一样(也可以一样,颜色不一样的情况是可以根据颜色计算矩形区域进行裁剪),如果填充像素小于多少(比如:填充像素小于2,说明它是一个像素点的噪点),用黑色或者其他颜色(背景色)再做一次填充,重复执行上面的步骤,直到所有的白色都进行过填充算法。

下面是填充去噪算法核心代码:

        /**
	 * 油漆桶 工具
	 * @param image	图像
	 * @param x	坐标x
	 * @param y	坐标y
	 * @param colorRGB 要填充的颜色
	 * @param fillingColorRGB 填充的颜色
	 * @return 填充像素个数
	 */
	public int paintBucket(BufferedImage image,int x,int  y,int colorRGB,int fillingColorRGB){
		int count=0;
		Color c=new Color(image.getRGB(x, y));
		if(c.getRGB()==colorRGB){
			image.setRGB(x, y, fillingColorRGB);
			count++;

			if(y-1>=0){//上
				Color c4=new Color(image.getRGB(x, y-1));
				if(c4.getRGB()==colorRGB){
					count+=paintBucket(image,x,y-1,colorRGB,fillingColorRGB);
				}
			}

			if(y+1=0){//左
				Color c2=new Color(image.getRGB(x-1, y));
				if(c2.getRGB()==colorRGB){
					count+=paintBucket(image,x-1,y,colorRGB,fillingColorRGB);
				}
			}

			if(x+1