编辑:我不允许使用任何直接对图像应用中值滤镜的第三方库。
我正在尝试在Java中实现中位数过滤器。我正在使用以下逻辑。
package com.start;
import java.io.File;
import java.io.FileOutputStream;
import java.nio.file.Files;
import java.util.Arrays;
public class MedianFilter {
public static void main(String ...args) throws Exception{
MedianFilter md= new MedianFilter();
md.applyMedianFilter();
}
public void applyMedianFilter() throws Exception{
//input image is 256*230
File ip = new File("G:\\ct.raw");
File op = new File("G:\\ctoutput.raw");
FileOutputStream stream = null;
stream = new FileOutputStream(op);
byte[] fileContent = Files.readAllBytes(ip.toPath());
int[] resultArr = new int[fileContent.length];
for (int i = 0; i < fileContent.length; i++) {
resultArr[i] = fileContent[i] & 0xff;
}
int[][] pixels = new int[256][230];
for (int i = 0; i < 256; i++) {
for (int j = 0; j < 230; j++) {
pixels[i][j] = resultArr[(j * 230) + i];
}
}
int[] data = new int[9];
for (int i = 0; i < 256; i++) {
for (int j = 0; j < 230; j++) {
int counter = 0;
//median filter of size 3*3
for (int k = -1; k <= 1; k++) {
for (int l = -1; l <= 1; l++) {
{
data[counter] = pixels[i + k][j + l];
counter++;
}
}
}
Arrays.sort(data);
stream.write(data[4]);
}
}
stream.close();
}
}
实际图片
我不知道导致此图像模糊的原因。有没有其他方法可以使用java
实现中值过滤器