【Android图像处理】图像处理之-噪点特效

来源:互联网 发布:log4j 写入mysql 编辑:程序博客网 时间:2024/05/14 16:57

一般在做图像处理的时候都希望降噪,噪点越少越好。

但是在图片中增加噪点也会达到意想不到的效果。

增加噪点的代码如下:

public static Bitmap Noise(Bitmap bitmap){int w = bitmap.getWidth();int h = bitmap.getHeight();Bitmap result = Bitmap.createBitmap(w, h, Bitmap.Config.RGB_565);int r, g, b, color;int[] oldPx = new int[w *h];int[] newPx = new int[w *h];int num = (int)(0.2f * 32768f);bitmap.getPixels(oldPx, 0, w, 0, 0, w, h);for (int x = 0; x < w; x++) {for (int y = 0; y < h; y++) {color = oldPx[x * h + y];r = Color.red(color);g = Color.green(color);b = Color.blue(color);if (num != 0){int rr = getRandomInt(-255, 0xff) * num;int gg = getRandomInt(-255, 0xff) * num;int bb = getRandomInt(-255, 0xff) * num;int rrr = r + (rr >> 15);int ggg = g + (gg >> 15);int bbb = b + (bb >> 15);r = (rrr > 0xff) ? ((byte)0xff) : ((rrr < 0) ? ((byte)0) : ((byte)rrr));g = (ggg > 0xff) ? ((byte)0xff) : ((ggg < 0) ? ((byte)0) : ((byte)ggg));b = (bbb > 0xff) ? ((byte)0xff) : ((bbb < 0) ? ((byte)0) : ((byte)bbb));}              newPx[x * h + y] = Color.rgb(r, g, b);}} result.setPixels(newPx, 0, w, 0, 0, w, h);return result;}
其中getRandomInt方法如下:

static int getRandomInt(int a, int b) {  int min = Math.min(a, b);    int max = Math.max(a, b);return min + (int)(Math.random() * (max - min + 1));} 
效果如下:

                       效果图                                                  原图


在使用本算的时候,需要将图片截取成宽高相等的图片才能得到比较理想的效果。

1 0