前からやってみたかった手書き風の画像処理をしてみた。

#include "ipmpack.hsp"
dialog "bmp;*.gif;*.jpg",16
exist refstr
if (strsize==-1){end}else{picload refstr:title getpath(refstr,8)}
mref vram,66
size=ginfo(26),ginfo(27)
ipm_m_vraminit buf1,size(0),size(1)
ipm_m_vramcopy buf1,vram,size(0),size(1)
n=5
ipm_f_circle f_fil,n
ipm_m_double2int f_fil,i_fil,n*n
ipm_codemedianfilter varptr(vram),varptr(buf1),0,0,size(0),size(1),size(0),size(1),n,n,varptr(i_fil),varptr(i_fil),varptr(i_fil),n*n-n,0
ipm_m_vramcopy vram,buf1,size(0),size(1)
ipm_codekuwaharafilter varptr(vram),varptr(buf1),0,0,size(0),size(1),size(0),size(1),3,3,0
ipm_m_vraminit buf2,size(0),size(1)
n=3
ipm_f_gauss f_fil,n,2
f_fil(n*n/2+n/2-1)=-1.0+f_fil(n*n/2+n/2-1)
ipm_m_double2int f_fil,i_fil,n*n
ipm_codefilter varptr(buf1),varptr(buf2),0,0,size(0),size(1),size(0),size(1),n,n,varptr(i_fil),varptr(i_fil),varptr(i_fil),0,0,0,0
sdim table,257:repeat 256:if (cnt<=5){poke table,cnt,0}else{poke table,cnt,limit(cnt*3,50,255)}:loop
ipm_codegrayscale varptr(buf2),varptr(buf2),0,0,size(0),size(1),size(0),size(1),varptr(table),varptr(table),varptr(table)
ipm_codesubtraction varptr(buf1),varptr(vram),0,0,size(0),size(1),size(0),size(1),varptr(buf2)
n=2
ipm_f_average f_fil,n*n
ipm_codemedianfilter varptr(vram),varptr(buf1),0,0,size(0),size(1),size(0),size(1),n,n,varptr(i_fil),varptr(i_fil),varptr(i_fil),1,0
ipm_m_vramcopy vram,buf1,size(0),size(1)
n=2
ipm_f_circle f_fil,n*n
ipm_codemedianfilter varptr(vram),varptr(buf1),0,0,size(0),size(1),size(0),size(1),n,n,varptr(i_fil),varptr(i_fil),varptr(i_fil),n*n-n,0
ipm_m_vramcopy vram,buf1,size(0),size(1)

それにしてもこのblog(MSN Spaces blog)、pngとかでアップできないから困る!
JPEGにしても勝手に圧縮率変えて再圧縮されて汚くなるし。
MSN Spaces余分なことするんじゃねえええええ。
50kb未満のサイズならそのまま通して下さい。

そもそも今時JPEGって、JPEG2000が標準になってくれればいいなあ。

関連記事

  • HSP用の画像処理モジュールipmpackの開発 part1HSP用の画像処理モジュールipmpackの開発 part1 ついにHSPのモジュールのver1.002が完成。 そのモジュールでフィルタを作りました。 これが、前からやってみたかった処理。 これをやるためだけに作ったんだぜ^^ 後はストローク・波・ノイズとかがあれば。 […] Posted in ライブラリ制作
  • メディアンカットによる減色アルゴリズムメディアンカットによる減色アルゴリズム 3日前から、いつものHSP言語で減色プログラムを作ってたのですが、なかなか難しい。 メディアンカットを実装したいんだけど、資料がないんですよねー。 ということで、減色アルゴリズムを調べた形跡を紹介します。 減色アルゴリズム1 1. 全ての色からある程度階調を落とした色数のヒストグラム作成 2. 色数を多い方から昇順でソートする。 3. […] Posted in ライブラリ制作
  • Bresenhamアルゴリズムで線分の計算は早いのかなBresenhamアルゴリズムで線分の計算は早いのかな 以前、直線を描くのにこんなのを作った。 特に工夫点もない、素直な方法である。 #module "linem" #deffunc line2 int line_x1,int line_y1,int line_x2,int line_y2 line_xabs = abs(line_x1-line_x2) line_yabs = […] Posted in アルゴリズム
  • HSPの画像処理モジュールipmpackをアフィン変換対応しましたHSPの画像処理モジュールipmpackをアフィン変換対応しました 久しぶりにipmpackを更新しました。 まだvectorからはダウンロード出来ません。 placearkの方からダウンロードして下さい。 今回オマケとして、sample\ipmpackの中に、 少しだけコンパイル前のソースコードが入っています。 ipmpack […] Posted in ライブラリ制作
  • ドット絵用の拡大アルゴリズムの開発ドット絵用の拡大アルゴリズムの開発 前々から拡大について色々作ってたのですが、 ちょっと新作のフィルターが完成しました^^ 原理的にはまずニアレストネイバーで拡大して、 次に斜め線になるようなところに補間を入れていく。 処理の関係でドット絵専用フィルターになりそう と言うわけでちょっと結果をお見せします。 まず元画像はこちら 8bit design.様 よりDRAGON […] Posted in アルゴリズム
  • HSPでアルファチャンネル付きレイヤードウィンドウを実装したHSPでアルファチャンネル付きレイヤードウィンドウを実装した 以前、アルファ値付きのウィンドウを作りたくて、 リージョンではなくレイヤードウィンドウについて色々調べてたのですが、なかなかうまくいかず。 結局HSPは32bitのウィンドウではなくて24bitのウィンドウのために、 アルファ値付きは不可能なんだと勝手に決めつけ断念していました・・・ それで、もう1度、昨日から再度調査しなおしていたのですが、 UpdateLay […] Posted in ライブラリ制作