Portál AbcLinuxu, 23. dubna 2024 16:25


Dotaz: Rozmazání obrázku pomocí nástrojů z netpbm

18.12.2018 21:09 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozmazání obrázku pomocí nástrojů z netpbm
Přečteno: 192×
Odpovědět | Admin
Hledám cestu jak pomocí nástrojů z netpbm dosáhnout podobného rozmazání obrázku, jako když v Gimpu použiju filtr "Median blur". Bohužel v hledání na netu jsem prozatím moc úspěšný nebyl.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.12.2018 11:31 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Rozmazání obrázku pomocí nástrojů z netpbm
Odpovědět | | Sbalit | Link | Blokovat | Admin
No, tak nezbývá než abych si odpověděl sám:
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/null
Použití:
user@stroj:~$ ./medianblur.sh vstupni.pnm 55,55 > pozadi.pnm
user@stroj:~$ pamarith -divide vstupni.pnm pozadi.pnm > popredi.pnm
Vý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.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.