填充去噪算法
程序员文章站
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
上一篇: emacs学习笔记