¿Busca urgentemente el pseudocódigo de filtrado mediano (300 puntos)?
{
/*Carbón sin firmar m = mid(
mid (bArray[ 0], bArray[1], bArray[2]),
mid (bArray[3], bArray[4], bArray[5]),
mid (bArray[ 6], bArray[7], bArray[8]);
Devuelve m */
//Variable de bucle
int I; >
int j;
int k;
//Variable intermedia
Carácter sin signo bTemp
int iFilterLen = iFilterH * iFilterW;
Promedio flotante = 0; //para aceleración promedio
//valor promedio
for(I = 0; i & ltiFilterLeni++)
{
promedio+= bArray[I];
}
promedio = promedio/iFilterLen;
Píxel de caracteres sin firmar _ mid
pixel _ mid = bArray[(iFilterH-1)/2 * iFilterW+(iFilterW-1)/2] //Antes del valor central de la ventana de filtro Valor de píxel
.if (abs(average-pixel_mid)>10) //Aceleración promedio, donde "10" es la diferencia entre la mediana original y la media, y el tamaño se puede configurar de acuerdo con su situación real
.//if(1) //Seleccione esto cuando no se requiera aceleración promedio.
{
//Método de mediana súper rápido (esencialmente un método pseudomediano)
//Disposición de filas
Si (0 )
{
for(k = 0; k & ltiFilterHk ++)
{
for(j = 0 ;j & ltiFilterH-1;j++)
{
for(I = 0;i<iFilterW-1-j;i++)
{
Número++;
if(bArray[I+iFilterH * k]& gt; bArray[i+iFilterH*k+1])
{ //Intercambio
Bt EMP = bArray[I+iFilterH * k];
bArray[I+iFilterH * k]= bArray[I+iFilterH * k+1];
bArray[ I+iFilterH * k+1]= Bt EMP;
}
}
}
}
//Disposición de las columnas
//for(k = 0; k & ltiFilterWk ++)
//{
k =(iFilterW-1) /2;
for(j = 0;j & ltiFilterH-1;j++)
{
for (I = 0;i<iFilterW-1-j ;i++)
{
número++;
if(bArray[k+iFilterW * I ]& gt; bArray[k+iFilterW*(i+1 )])
{
//Exchange
Bt EMP = bArray[k+iFilterW * I];
bArray[k +iFilterW * I]= bArray[k+iFilterW *(I+1)];
bArray[k+iFilterW *(I+1 )]= Bt EMP;
}
}
}
}
Otros
{
//Tradicional método de burbujeo para obtener el valor mediano.
if(0)
{ for(j = 0; j & ltiFilterLen-1; j ++)
{
for(I = 0;i<iFilterLen-j-1;i++)
{
número++;
if(bArray[I] & gt; bArray[i + 1])
{
//Exchange
Bt EMP = bArray[I];
bArray[I]= bArray [I+1];
bArray[I+1]= Bt EMP;
}
}
}
}
Otros
{
quickSort(bArray, 0, iFilterLen-1); //Método de clasificación rápida
}
}
}
//En caso contrario
//Calcular la mediana. Nota: Las matrices de este programa tienen un número impar de elementos.
Bt EMP = bArray[(iFilterLen-1)/2];
//Devuelve el valor intermedio
Devuelve bTemp
}
void quickSort(carácter sin firmar a[], int l, int r)
{//Ordenar a [l: r], el valor de a[r+1] es muy grande.
int t;
If (l & gt= r) return;
Int i = l, //cursor de izquierda a derecha
j = r+1; //Cursor de derecha a izquierda
Unsigned char pivot = a[l];
//Convierte el elemento izquierdo > = pivote y Derecha
mientras (verdadero) {
Hacer {//Ver = izquierda >elemento de pivote
I = I+1;
número++;
} while(a[I]<pivot);
hacer {//find
j = j-1;
Número++;
} while(a[j]& gt; pivot);
If (i & gt= j) desconectar;/ /Objeto de intercambio no encontrado.
t = a[I];
a[I] = a[j]
a[j] = t; p>}
//Establecer p i v o t
a[l]= a[j];
a[j] = pivote;
Ordenación rápida (a, l, j-1); // Ordena el segmento izquierdo
Ordenación rápida (a, j + 1, r); // Ordena el segmento derecho p>
}