Die Idee wie ich es verstehe ist allmählich grau-isierung; das konvergiert allmählich zum Graustufenbild. Dies kann wie gesagt erreicht werden, indem man sich diesem annähert; ein Konvergenzproblem.
Wenn die Menge größer als der Konvergenzwert ist, verringern wir; Wenn es kleiner ist, nehmen wir zu.
In der ersten Schleife finden wir den Mittelwert (Konvergenzwert).
int[] avg=new int[pix.length];
for(i=0; i<wc; i++)
for(j=0; j<hc; j++) {
int p=bim.getRGB(i, j);
int p1=(p&0x00ff0000)>>16, p2=(p&0x0000ff00)>>8, p3=p&0x000000ff;
avg[i+j*wc]=(p1+p2+p3)/3;
}
In der zweiten Schleife führen wir die Konvergenz:
wir erhöhen/jede der drei Farbkomponenten ab, bis alle zusammenlaufen: von einem kleinen Schritt von 10 in diesem Fall, dass Sie den Wert auswählen.
Wenn der Wert innerhalb einer Konvergenzeinheit (z. B. weniger als 10) liegt, setzen wir den Wert auf den Konvergenzwert. Wenn das für alle Pixel passiert, haben wir Graustufen erreicht.
boolean f1=false, f2=false, f3=false;
while(true) {
f1=false; f2=false; f3=false;
for(i=0; i<wc; i++)
for(j=0; j<hc; j++) {
int p=bim.getRGB(i, j);
int p1=(p&0x00ff0000)>>16, p2=(p&0x0000ff00)>>8, p3=p&0x000000ff;
if(p1>avg[i+j*wc]+10) { p1-=10; if(p1<avg[i+j*wc]) p1=avg[i+j*wc]; f1=true; }
else if(p1<avg[i+j*wc]-10) { p1+=10; if(p1>avg[i+j*wc]) p1=avg[i+j*wc]; f1=true; }
if(p2>avg[i+j*wc]+10) { p2-=10; if(p2<avg[i+j*wc]) p2=avg[i+j*wc]; f2=true; }
else if(p2<avg[i+j*wc]-10) { p2+=10; if(p2>avg[i+j*wc]) p2=avg[i+j*wc]; f2=true; }
if(p3>avg[i+j*wc]+10) { p3-=10; if(p3<avg[i+j*wc]) p3=avg[i+j*wc]; f3=true; }
else if(p3<avg[i+j*wc]-10) { p3+=10; if(p3>avg[i+j*wc]) p3=avg[i+j*wc]; f3=true; }
bim.setRGB(i, j, 0xff000000|(p1<<16)|(p2<<8)|p3);
}
if(f1 || f2 || f3) ; else { System.err.println("no change"); break; }
}
Können Sie genauer sein? – ControlAltDel
Sie möchten also wissen, wie Sie ein zufälliges Pixel auswählen, das zuvor nicht ausgewählt wurde, und es in Graustufen ändern? 0% 100% aller ausgewählten Pixel gleitende Skala? –
Zeigen Sie Beispiele dafür, was Sie vorhaben. Verwenden Sie ein Werkzeug wie Gimp oder Photoshop, um sie zu erstellen. –