21. September 2011

Automatische Verbesserung schlecht gescannten Bücher (Linux)

Das ist noch ein Thema, mit dem ich mich beschäftigt habe. Ich habe ein altes Buch in Internet gefunden. Dessen Qualität läßt zu wünschen übrig, auf dem Foto ist es gut zu sehen.


Beim detaillierten Anschauen kann man viel Rauschen erkennen. Kann man lesen, aber...

Mit dem Programm GIMP habe ich versucht, ob man tatsächlich verbessern könnte, z.B. wenn man Farbkurven benutzt. Nachden auf der Seite Skripte für ImageMagick habe ich das richtige Skript dafür gefunden: curves.

Transformation Graph (curve with points drawn)

Für zwei Pukte waren die besten Parametern experimentell herausgefunden:
./curves -s 100,100 "25,25 75,95" test.jpg test_out.jpg

man kann auch versuchen mit diesen Parametern:
./curves -s 100,100 "50,50 75,95" test.jpg test_out.jpg

hier sieht man das Ergebnis:


Nachdem habe ich das Skript geschrieben für die zyklische Verarbeitung von allen gescannten Seiten:

#!/bin/bash
# loop_for_fotos.sh
#

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

#ist convert installiert ?
convert > /dev/null
if [ $? -ne 0 ] ; then
    echo "Error: convert is needed, it's a part of ImageMagick" ;
fi;
DIR=$1;
# am ende alle "/" entfernen
if [ -z $1 ]; then $DIR=`pwd`;
else
    TEMP=`pwd`;
    cd $DIR; TEMP2=`pwd`;
    cd $TEMP;
    DIR=$TEMP2;
    echo $TEMP2;
fi;
#alte dateien in das DIR.orig verzeichnis
echo $DIR
#mkdir $DIR/orig;
#cp *.jpg $DIR/orig/
ERR=0;
CPUS=1;
echo "Start in " $DIR
files=$(ls $DIR/*.jpg)
list=($files)
len=${#list[@]}
echo $len
CPUS=2;
echo "Start curve transformation"
for(( i=0; i<$len ; i=i+$CPUS))
do
    for(( j=0; j<$CPUS ; j++))
    do
    if [ ${list[i+j]} ]; then
#echo ${list[i+j]}
    ./curves -s 100,100 "25,25 75,95"  ${list[i+j]} ${list[i+j]}.new.jpg &
    fi
    done;
    for job in `jobs -p`
    do
    echo $job
    wait $job || let "FAIL+=1"
    done;
    if [ $? -eq 0 ]; then
    echo "curve transformation successfully ;) next step";
    else ERR=$[$ERR+1]; #считаем ошибки
    fi;
    for(( j=0; j<$CPUS ; j++))
    do
    if [ ${list[i+j]} ]; then
    mv  ${list[i+j]}.new.jpg ${list[i+j]}
    fi
    done;
done;

if [ $ERR -eq 0 ]; then
    echo "Job done!";
else echo "Job done with some errors.";
fi;
echo "You can find your old files in $DIR.orig"

IFS=$SAVEIFS
#end



Punkte für die Kurven sollte man immer zuerst experimentell feststellen, hängt nur von der Scanqualität ab.

Autor: Karbofos.

19. September 2011

Reparatur eines Samsung X20 Laptops

Ich habe einen Samsung X20 geerbt und habe versucht den zu reparieren. Symptome: beim Einschalten die LED des Netzteils beginnt zu blinken, vermutlich weil es überlastet ist. Das Notebook funktionierte bis der Akku leer war, also keine Ladefunktion.

Der Laptop ist auseinandergesetzt. Der FET SI4435 ist zu heiß, auf dem Foto ist rot bezeichnet.



Ich versuche herauszufinden was da nicht stimmt. Sehr wahrscheinlich ist es wegen Kurzschluss überlastet, aber nicht auf dieser Platine, sondern auf dem Mainboard, weil auf der kleinen Platine sich keine weiteren Verbraucher befinden.

Auf dem Mainboard das Erste, was ich geprüft habe, ist der Wiederstand zwischen 18V und Masse, bezeichnet auf dem Foto mit grüner Farbe: 0.001 Ohm! Jetzt muss man feststellen, wo der Kurzschluss ist. Nacheinander habe ich die FET's SI4435 abgelötet (blau bezeichnet), in der Näher gibt's noch einen SI4431 neben der Schottky-Diode, rot markiert. Nach den SI4435' hat sich nichts geändert, aber nach dem SI4431 ist der Kurzschuss verschwunden. Schottky-Diode neben dem Transistor habe ich auch vorsichsthalbe ausgelöttet. Sie war auch defekt.



Nach dem Ersetzen von beiden Teilen hat der Laptop wieder angefangen zu starten und den Akku aufzuladen.

Gleich nach dem Testen habe ich Debian basiertes Betriebssystem installiert. Den WLAN-Treiber für das Notebook kann man hier herrunterladen.