当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 利用imagemagic做出图形的马赛克效果
帖子发表于 : 2008-01-30 4:35 

注册: 2008-01-20 22:27
帖子: 54
送出感谢: 0 次
接收感谢: 0 次
其实是为了学期的大作业,就选了这题目,供大家参考。特别说明一下,附上几张效果图,并把报告贴上来了,只不过全是法文的,实在没空再去写一个中文的,如果有兴趣哪里看不懂,可以发邮件来问。

『计算机类』TER 'Creation de mosaique de photo' 【原创】
sujet de TER(学期末大作业):Creation de mosaique de photo' 马赛克重现图像
专业:Ingenieur Mathematique(university lyon1)
年级:Master 1
作者地址:conanbos@yahoo.com.cn
系统:linux version 2.4
开发环境:shell bash
系统支持库:ImageMagic6

说明:对原图像进行分析并切割,切割后的小像素图与图库中的图片进行色度分析,取得最优匹配,重新填补原图,形成最后马赛克效果。
效果图的逼近成度取决于图库信息量。

作业要求


源码:
#!/bin/bash

#check image size/if input image is not 1024x768 then exit programme

imagesize="$( identify -format "%wx%h" $1)"

if [ $imagesize != "1024x768" ]; then

echo "please format image to 1024x768"

#info="$(identify $1)"

#echo $info#|sed -e "/^[1-9]../p"

#format image to 1024x768

convert -crop 1024x768+0+0 $1 $1

exit

fi



#fonc compare two images ,return similar filename /compare sw sh path filename

function compare()

{

image1="$1/$2"

returnfile=image1

returnvalue=1000



#echo "compare"



for image2 in `ls images`

do

Mean=$(convert $image1 images/$image2 -compose difference -composite -fx '(r+g+b)/3' miff:-|identify -verbose -|sed -n '/^.*Mean: */{s//scale=2;/;s/(.*)//;s/$/*100\/32768*10/;p;q;}'|bc)

Mean=$(echo $Mean|sed -e 's/\..*//g')



if [ $Mean -lt $returnvalue ]; then

returnfile=$image2

returnvalue=$Mean

fi

done



echo $returnfile

return



}





#creater a directory

testdir="$(ls -d "Repertoire_$1")"

if [ -n $testdir ]; then

rm -fr "Repertoire_$1"

#rmdir "Repertoire_$1"

echo "Repertoire suprimer"

fi



md="$(mkdir "Repertoire_$1")"

if [ -z $md ]; then

echo "cree un repertoire : Repertoire_$1"

else

echo "error"

fi









#split a image

sw=0

sh=0

paths=""

while [ $sw -le 992 ]

do



while [ $sh -le 736 ]

do

paths="Repertoire_$1/$sw#$sh"

convert -crop 32x32+$sw+$sh $1 $paths

#identify -verbose "Repertoire_$1/$1_$sw#$sh">"Repertoire_$1/$sw#$sh.ide"



sh=`expr $sh + 32`

echo -n "."

done

sh=0

sw=`expr $sw + 32`



progresse="$(echo "($sw/1024)*100"|bc -l|sed -e 's/\^*0000*//g'|cut -c1-6)"

echo $progresse"%"



done



echo "....................100% decoupe image success"







echo "en train analyse base de donne de image........"

echo "recompose l'image mosaique....................."

#convert -size 1024x768 xc:white mosaic_$1

touch script_mosaic

echo "convert -size 1024x768 xc:white ">script_mosaic

echo "create success"

sw=0

sh=0

paths=""

while [ $sw -le 992 ]

do



while [ $sh -le 736 ]

do

paths="Repertoire_$1"



#echo "$sw#$sh"

#compare $sw $sh $paths "$sw#$sh"

getfile="$(compare $paths "$sw#$sh")"

#echo "filenameget : $getfile"



echo "images/$getfile -geometry 32x32+$sw+$sh -composite ">>script_mosaic

#convert mosaic_$1 $getfile -geometry 32x32+$sw+$sh -composite mosaic_$1

#identify -verbose "Repertoire_$1/$1_$sw#$sh">"Repertoire_$1/$sw#$sh.ide"



sh=`expr $sh + 32`

echo -n "."

done

sh=0

sw=`expr $sw + 32`



progresse="$(echo "($sw/1024)*100"|bc -l|sed -e 's/\^*0000*//g'|cut -c1-6)"

echo $progresse"%"



done

echo "mosaic_test.jpg">>script_mosaic

echo "compose images to new file"

scripts=$(cat script_mosaic)

`$scripts`

echo "finish"


附件:
文件注释: 程序运行最后的结果
final.jpg
final.jpg [ 548.9 KiB | 被浏览 568 次 ]

文件注释: 作业的要求
Screenshot-TER_mosaic.pdf.png
Screenshot-TER_mosaic.pdf.png [ 233.66 KiB | 被浏览 564 次 ]

文件注释: 打包的文件,里面有 list.txt 说明文件。
mosaic.tar.gz [1.2 MiB]
被下载 73 次
页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-01-30 8:41 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
赞~LZ在发过深造?


_________________
关注我的blog: ε==3


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-01-30 17:12 

注册: 2008-01-20 22:27
帖子: 54
送出感谢: 0 次
接收感谢: 0 次
bones7456 写道:
赞~LZ在发过深造?


是的 :)


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译