Portál AbcLinuxu, 10. května 2025 08:06
Řešení dotazu:
user@stroj:~$ cat ./medianblur.sh #!/bin/bash NAME="medianblur" ORIG=$1 RADIUS=(${2/,/ }) # TYPE může být také select, ale operace trvá delší dobu TYPE="histogram_sort" PPMTORGB3=$(command -v ppmtorgb3) [ ! -x "${PPMTORGB3}" ] && exit 2 PGMMEDIAN=$(command -v pgmmedian) [ ! -x "${PGMMEDIAN}" ] && exit 3 RGB3TOPPM=$(command -v rgb3toppm) [ ! -x "${RGB3TOPPM}" ] && exit 4 PAMARITH=$(command -v pamarith) [ ! -x "${PAMARITH}" ] && exit 5 trap '''CHYBA=$? ; case $CHYBA in 2|3|4|5) echo "Doinstalovat netpbm" ;; esac [ $NORMDIR ] || rm -rf -- "$TEMPDIR" exit $CHYBA ''' EXIT TEMPDIR=$(mktemp -d -p /tmp ${NAME}-XXX) || exit 1 median () { ${PGMMEDIAN} -width=${RADIUS[0]} -height=${RADIUS[1]} -type ${TYPE} $1 } TEMPFILE=$(tempfile -d ${TEMPDIR} -s .ppm) cp ${ORIG} ${TEMPFILE} pushd ${TEMPDIR} &>/dev/null ${PPMTORGB3} ${TEMPFILE} && median ${TEMPFILE//.ppm/.red} > ${TEMPFILE//.ppm/med.red} && median ${TEMPFILE//.ppm/.grn} > ${TEMPFILE//.ppm/med.grn} && median ${TEMPFILE//.ppm/.blu} > ${TEMPFILE//.ppm/med.blu} ${RGB3TOPPM} ${TEMPFILE//.ppm/med.red} ${TEMPFILE//.ppm/med.grn} ${TEMPFILE//.ppm/med.blu} popd &>/dev/nullPoužití:
user@stroj:~$ ./medianblur.sh vstupni.pnm 55,55 > pozadi.pnm user@stroj:~$ pamarith -divide vstupni.pnm pozadi.pnm > popredi.pnmVýsledný soubor lze dále zpracovat. V gimpu se mi osvědčilo aplikovat mód "grain merge" (odstraní zrno) a "linear burn" (zvýrazní vrstvu popředí). U netpbm zatím nevím jaké jsou odpovídající alternativy.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.