//原文地址
java数字图像处理常用算法前些时候做毕业设计 用java做的数字图像处理方面的东西 这方面的资料ms比较少 发点东西上来大家共享一下 主要就是些算法 有自己写的 有人家的 还有改人家的 有的算法写的不好 大家不要见笑
一 读取bmp图片数据
//获取待检测图像数据保存在数组 nData[] nB[]nG[]nR[]中
publicvoid getBMPImage(String source) throws Exception {clearNData();//清除数据保存区FileInputStream fs = null;try {fs = new FileInputStream(source);int bfLen = ;byte bf[] = new byte[bfLen];fs read(bf bfLen); // 读取 字节BMP文件头int biLen = ;byte bi[] = new byte[biLen];fs read(bi biLen); // 读取 字节BMP信息头
// 源图宽度nWidth = (((int) bi[ ]xff))| (((int) bi[ ]xff))| (((int) bi[ ]xff)) | (int) bi[ ]xff;
// 源图高度nHeight = (((int) bi[ ]xff))| (((int) bi[ ]xff))| (((int) bi[ ]xff)) | (int) bi[ ]xff;
// 位数nBitCount = (((int) bi[ ]xff)) | (int) bi[ ]xff;
// 源图大小int nSizeImage = (((int) bi[ ]xff))| (((int) bi[ ]xff))| (((int) bi[ ]xff)) | (int) bi[ ]xff;
// 对 位BMP进行解析if (nBitCount == ){int nPad = (nSizeImage / nHeight) nWidth * ;nData = https://www.04ip.com/post/new int[nHeight * nWidth];nB=new int[nHeight * nWidth];nR=new int[nHeight * nWidth];nG=new int[nHeight * nWidth];byte bRGB[] = new byte[(nWidth + nPad) * * nHeight];fs read(bRGB (nWidth + nPad) * * nHeight);int nIndex = ;for (int j = ; jnHeight; j++){for (int i = ; inWidth; i++) {nData[nWidth * (nHeight j ) + i] = (xff)| (((int) bRGB[nIndex + ]xff))| (((int) bRGB[nIndex + ]xff))| (int) bRGB[nIndex]xff;nB[nWidth * (nHeight j ) + i]=(int) bRGB[nIndex] xff;nG[nWidth * (nHeight j ) + i]=(int) bRGB[nIndex+ ] xff;nR[nWidth * (nHeight j ) + i]=(int) bRGB[nIndex+ ] xff;nIndex += ;}nIndex += nPad;} //Toolkit kit = Toolkit getDefaultToolkit(); //image = kit createImage(new MemoryImageSource(nWidth nHeight//nData nWidth));
/*//调试数据的读取
FileWriter fw = new FileWriter( C:\\Documents and Settings\\Administrator\\My Documents\\nDataRaw txt );//创建新文件PrintWriter out = new PrintWriter(fw);for(int j= ;jnHeight;j++){for(int i= ;inWidth;i++){out print(( * +nData[nWidth * (nHeight j ) + i])+ _+nR[nWidth * (nHeight j ) + i]+ _+nG[nWidth * (nHeight j ) + i]+ _+nB[nWidth * (nHeight j ) + i]+ );}out println( );}out close();*/}}catch (Exception e) {e printStackTrace();throw new Exception(e);}finally {if (fs != null) {fs close();}}//return image;}
二 由r g b 获取灰度数组
publicint[] getBrightnessData(int rData[] int gData[] int bData[]){int brightnessData[]=new int[rData length];if(rData length!=gData length || rData length!=bData length|| bData length!=gData length){return brightnessData;}else {for(int i= ;ibData length;i++){double temp= *rData[i]+ *gData[i]+ *bData[i];brightnessData[i]=(int)(temp)+((temp (int)(temp)) ? : );}return brightnessData;}}
三 直方图均衡化
public int [] equilibrateGray(int[] PixelsGray int width int height){int gray;int length=PixelsGray length;int FrequenceGray[]=new int[length];int SumGray[]=new int[ ];int ImageDestination[]=new int[length];for(int i = ; i length ;i++){gray=PixelsGray[i];FrequenceGray[gray]++;}//灰度均衡化SumGray[ ]=FrequenceGray[ ];for(int i= ;i ;i++){SumGray[i]=SumGray[i ]+FrequenceGray[i];}for(int i= ;i ;i++) {SumGray[i]=(int)(SumGray[i]* /length);}for(int i= ;iheight;i++){for(int j= ;jwidth;j++){int k=i*width+j;ImageDestination[k]= xFF | ((SumGray[PixelsGray[k]]) | (SumGray[PixelsGray[k]] ) | SumGray[PixelsGray[k]]);}}return ImageDestination;}
四 laplace 阶滤波 增强边缘 图像锐化
public int[] laplace DFileter(int []data int width int height){int filterData[]=new int[data length];int min= ;int max= ;for(int i= ;iheight;i++){for(int j= ;jwidth;j++){if(i== || i==height || j== || j==width )filterData[i*width+j]=data[i*width+j];elsefilterData[i*width+j]= *data[i*width+j] data[i*width+j ] data[i*width+j+ ]data[(i )*width+j] data[(i )*width+j ] data[(i )*width+j+ ]data[(i+ )*width+j] data[(i+ )*width+j ] data[(i+ )*width+j+ ];if(filterData[i*width+j]min)min=filterData[i*width+j];if(filterData[i*width+j]max)max=filterData[i*width+j];}}//System out println( max: +max);//System out println( min: +min);for(int i= ;iwidth*height;i++){filterData[i]=(filterData[i] min)* /(max min);}return filterData;}
- 如何获取云服务器的源代码? 云服务器源代码怎么弄
- 如何设置云服务器的源代码? 云服务器源代码怎么设置
- java查询数组中是否包含某一个值 javamongodb数组查询
- 如何修改云服务器的源代码? 云服务器源码怎么修改
- 如何寻找云服务器的源代码? 云服务器源码怎么找
- 如何配置云服务器的源代码? 云服务器源码怎么设置
- redis实战电子书 redisjava书籍
- redis哨兵keepalive 代码redis哨兵
- javaredis集群 javaredis列队
- Redis队列排队 redis队列java
