andrid图像处理系统1.3.0图像的直方图均衡
2012-08-30 18:25
295 查看
最终版源代码:https://github.com/nuptboyzhb/AndroidImageProSystem
图像处理结果:
相关博客:http://blog.csdn.net/nuptboyzhb/article/details/7925994
在ImageProcess.java中添加如下代码:/*
*直方图均衡化
*/
public Bitmap histEqualize(Bitmap myBitmap){
// Create new array
int width = myBitmap.getWidth();
int height = myBitmap.getHeight();
int[] pix = new int[width * height];
myBitmap.getPixels(pix, 0, width, 0, 0, width, height);
Matrix dataR=getDataR(pix, width, height);
Matrix dataG=getDataG(pix, width, height);
Matrix dataB=getDataB(pix, width, height);
//Matrix dataGray=getDataGray(pix, width, height);
/////////////////////////////////////////////////////////
dataR=eachEqualize(dataR,width,height);
dataG=eachEqualize(dataG,width,height);
dataB=eachEqualize(dataB,width,height);
///////////////////////////////////////////////////////////////
// Change bitmap to use new array
Bitmap bitmap=makeToBitmap(dataR, dataG, dataB, width, height);
myBitmap = null;
pix = null;
return bitmap;
}
private Matrix eachEqualize(Matrix temp,int width,int height){
// 灰度映射表
int bMap[]=new int[256];
// 灰度映射表
int lCount[]=new int[256];
// 重置计数为0
int i,j;
for (i = 0; i < 256; i ++){
// 清零
lCount[i] = 0;
}
// 计算各个灰度值的计数 - 参考灰度直方图的绘制代码 (对话框类中)
for (i = 0; i < height; i ++){
for (j = 0; j < width; j ++){
lCount[(int)temp.get(i, j)]++; // 计数加1
}
}
// 计算灰度映射表
for (i = 0; i < 256; i++){
// 初始为0
int Temp = 0;
for (j = 0; j <= i ; j++){
Temp += lCount[j];
}
// 计算对应的新灰度值
bMap[i] = (int) (Temp * 255 / height / width);
}
// 每行
for (i = 0; i < height; i++){
// 每列
for (j = 0; j < width; j++){
temp.set(i, j, bMap[(int)temp.get(i,j)]);
}
}
return temp;
}
图像处理结果:
相关博客:http://blog.csdn.net/nuptboyzhb/article/details/7925994
在ImageProcess.java中添加如下代码:/*
*直方图均衡化
*/
public Bitmap histEqualize(Bitmap myBitmap){
// Create new array
int width = myBitmap.getWidth();
int height = myBitmap.getHeight();
int[] pix = new int[width * height];
myBitmap.getPixels(pix, 0, width, 0, 0, width, height);
Matrix dataR=getDataR(pix, width, height);
Matrix dataG=getDataG(pix, width, height);
Matrix dataB=getDataB(pix, width, height);
//Matrix dataGray=getDataGray(pix, width, height);
/////////////////////////////////////////////////////////
dataR=eachEqualize(dataR,width,height);
dataG=eachEqualize(dataG,width,height);
dataB=eachEqualize(dataB,width,height);
///////////////////////////////////////////////////////////////
// Change bitmap to use new array
Bitmap bitmap=makeToBitmap(dataR, dataG, dataB, width, height);
myBitmap = null;
pix = null;
return bitmap;
}
private Matrix eachEqualize(Matrix temp,int width,int height){
// 灰度映射表
int bMap[]=new int[256];
// 灰度映射表
int lCount[]=new int[256];
// 重置计数为0
int i,j;
for (i = 0; i < 256; i ++){
// 清零
lCount[i] = 0;
}
// 计算各个灰度值的计数 - 参考灰度直方图的绘制代码 (对话框类中)
for (i = 0; i < height; i ++){
for (j = 0; j < width; j ++){
lCount[(int)temp.get(i, j)]++; // 计数加1
}
}
// 计算灰度映射表
for (i = 0; i < 256; i++){
// 初始为0
int Temp = 0;
for (j = 0; j <= i ; j++){
Temp += lCount[j];
}
// 计算对应的新灰度值
bMap[i] = (int) (Temp * 255 / height / width);
}
// 每行
for (i = 0; i < height; i++){
// 每列
for (j = 0; j < width; j++){
temp.set(i, j, bMap[(int)temp.get(i,j)]);
}
}
return temp;
}
相关文章推荐
- andrid图像处理系统1.3.0图像的直方图均衡
- 图像处理学习之直方图均衡
- 红外图像处理之直方图均衡的matlab源码与效果验证
- 图像的直方图显示与直方图均衡处理
- 红外图像处理之直方图均衡的matlab源码与效果验证
- 图像处理与模式识别作业一:直方图均衡与灰度拉伸
- 直方图和直方图均衡的Matlab完整程序(数字图像处理)
- 数字图像处理1:直方图均衡
- 图像处理基本算法-直方图均衡
- 图像预处理|直方图均衡
- 图像处理中的直方图与均衡化
- 图像处理基本算法-直方图均衡
- 本文介绍一个 iPhone 图像处理库,提供了边缘检测、直方图均衡等功能。
- python数字图像处理(9):直方图与均衡化
- 灰度图像直方图均衡处理
- 图像处理基本算法-直方图均衡
- 彩色图像直方图均衡处理
- 【图像处理笔记】直方图均衡
- JavaScript图像处理(3) - 直方图均衡(Histogram Equalization)
- 【VS开发】【图像处理】直方图均衡与平台直方图