中值虑波java代码 中值滤波程序代码

Java图像去噪怎么实现?流程不外乎是
读取图像文件;
扫描噪点;
去除噪点;
保存图像文件 。
Java2D操作好像使用BufferedImage读取图像文件最方便,有一阵没弄这了 , 忘了 。应该可以读取JPG , PNG,GIF图像 。
识别噪点应该有专门的算法,我没研究过,百度一下应该能找到专门算法,然后写段代码就可以 。我个人以为是独立一个像素与周围一定范围内的像素差异过大 , 就认为是噪点 。可以有亮度 , 色相上的差别 。BufferedImage可以读取每个像素的RGB,从而能识别色相的差别;还有个矩阵,用来由RGB计算亮度的 , 也就可以计算亮度差别了,这个网上都能找到 。
输出也使用BufferedImage就可以 。
关键是每个像素都要和周围像素比较 , 还要计算亮度 , 最少是三重循环了,如何提高效率是个大问题了 。这个代码写好了也算一个高手了 。
急?。?nbsp;, 二值化后的图像 , 用JAVA中值滤波算法,去除椒盐噪点?。。?/h2>椒盐噪声中值虑波java代码的话一般可以用中值滤波器去除, 中值滤波器很容易实现, 依此遍历图像中每个像素点, 每个像素点与其周围的8个点像素值做一下排序操作, 找到这九个点中的中值点赋给当前遍历点的像素就可以中值虑波java代码了, 算法很简单吧. 中值虑波java代码我这有c的源码, 楼主要想要的话发邮件到中值虑波java代码我的邮箱769569350@qq.com我可以把程序发给中值虑波java代码你.
急求中值滤波的伪代码(300分)?unsigned char WINAPI GetMedianNum(unsigned char * bArray, int iFilterH,int iFilterW)
{
/*unsigned char m = mid(
mid(bArray[0],bArray[1],bArray[2]),
mid(bArray[3],bArray[4],bArray[5]),
mid(bArray[6],bArray[7],bArray[8]));
return m;*/
// 循环变量
inti;
intj;
intk;
// 中间变量
unsigned char bTemp;
int iFilterLen=iFilterH*iFilterW;
float average=0;//用于均值加速
//求均值
for (i=0;iiFilterLen;i)
{
average =bArray[i];
}
average=average/iFilterLen;
unsigned char pixel_mid;
pixel_mid=bArray[(iFilterH-1)/2*iFilterW (iFilterW-1)/2];//滤波窗口中心中值虑波java代码的取中值前中值虑波java代码的像素值
if (abs(average-pixel_mid)10)//均值加速中值虑波java代码,其中“10”为原中值和均值之差中值虑波java代码 , 根据中值虑波java代码你的实际情况自行设置大小
//if(1)//不用均值加速时选此
{
//超快速中值法(本质就是伪中值法)
//行排列
if (0)
{
for (k = 0; kiFilterH; k)
{
for (j = 0; jiFilterH-1; j)
{
for (i = 0; iiFilterW-1-j; i)
{
number;
if (bArray[i iFilterH*k]bArray[i iFilterH*k 1])
{// 互换
bTemp = bArray[i iFilterH*k];
bArray[i iFilterH*k] = bArray[i iFilterH*k 1];
bArray[i iFilterH*k 1] = bTemp;
}
}
}
}
//列排列
//for (k = 0; kiFilterW; k)
//{
k=(iFilterW-1)/2;
for (j = 0; jiFilterH-1; j)
{
for (i = 0; iiFilterW-1-j; i)
{
number;
if (bArray[k iFilterW*i]bArray[k iFilterW*(i 1)])
{
// 互换
bTemp = bArray[k iFilterW*i];
bArray[k iFilterW*i]= bArray[k iFilterW*(i 1)];
bArray[k iFilterW*(i 1)] = bTemp;
}
}
}
}
else
{
//传统冒泡法获取中值
if(0)
{for (j = 0; jiFilterLen - 1; j)
{
for (i = 0; iiFilterLen - j - 1; i)
{
number;
if (bArray[i]bArray[i1])
{
// 互换
bTemp = bArray[i];
bArray[i] = bArray[i1];
bArray[i1] = bTemp;
}
}
}
}
else
{
quickSort(bArray,0,iFilterLen-1);//快速排序法
}
}
}
//else
// 计算中值 。注:本程序的数组均为奇数个元素
bTemp=bArray[(iFilterLen -1) / 2];
// 返回中值
return bTemp;
}
void quickSort(unsigned char a[], int l, int r)
{// 排序a [ l : r ],a[r 1] 有大值
int t;
if (l = r) return;
int i = l, // 从左至右的游标
j = r1; // 从右到左的游标
unsigned char pivot = a[l];
// 把左侧= pivot的元素与右侧= pivot 的元素进行交换
while (true) {
do {// 在左侧寻找= pivot 的元素
i = i1;
number;
} while (a[i]pivot);
do {// 在右侧寻找= pivot 的元素
j = j - 1;
number;
} while (a[j]pivot);
if (i = j) break; // 未发现交换对象
t=a[i];
a[i]=a[j];
a[j]=t;
}
// 设置p i v o t
a[l] = a[j];
a[j] = pivot;
quickSort(a, l, j-1); // 对左段排序
quickSort(a, j 1, r); // 对右段排序
}
【中值虑波java代码 中值滤波程序代码】中值虑波java代码的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于中值滤波程序代码、中值虑波java代码的信息别忘了在本站进行查找喔 。

    推荐阅读