こんばんは.愛澤です. SIFTの実装に関する記事も3回目.今回はDoG画像を生成するところまで進みました.なかなか進まなくて大変ですっ.. ソース TestSIFT.c  ver 1.1.02 まず今回は,DoG画像を生成する部分を作成しました.画像の差分を求める際に,負数になる場合も考えられたので,画像を.pgm形式で出力するためにあえて+5してバイアスをかけています. また,平滑化画像とDoG画像の両方を出力するようにしました. /*********************************************************** * TestSIFT.c ver 1.1.02 * Yu Aizawa * 2010 / 09 / 01 13:51- * 平滑化画像のリスト化 ***********************************************************/ #include “Defsv1102.h” #include <math.h> #include <time.h> #define FSIZE 7 // フィルタのサイズ /*********************************************************** * 関数プロトタイプ **********************************************************/ Image *GaussianFilter(Image *oimg, double sigma); Image DiffImage(Image *nimg, Image …Read the Rest

SIFTの実装(2)

こんにちは.愛澤です. 今回は,SIFTの実装(1)から対して進んでいないんですけど,バグ取り等に取り組みました!っていうことで早速ソース載せます! ソース(C言語) TestSIFTv1100.c Utilsv1100.c Defsv1101.h TestSIFTv1100.c /** * TestSIFTv1100.c ver 1.1.00 * Yu Aizawa * 2010 / 08 / …Read the Rest

malloc()とリスト構造

どうも.愛澤です.SIFT Demo v4のソース見てて,「malloc()ってなんやねん!構造体の中にさらに構造体ってどないなっとんねん!!」ってなったので,調べてみました. メモリ管理 メモリの無駄遣い・・ Cでは,データを格納するために必要とするメモリ領域は,ふつうは変数を宣言したときに確保されるらしいです.そのとき確保されたメモリ領域は固定的だそう.なので,例えば文字列を格納する配列を宣言するときは char str[500] などと,余分に確保しておく必要があります.でないと,メモリ溢れちゃっったら動作がおかしくなるのだろうと思われます.でも,余分に確保するっていうことは,言い換えればメモリを無駄遣いしているっていうことになりますね. 動的メモリ割り当て! メモリの無駄遣いをなくすために用意されている機能こそが「動的メモリ割り当て」なのです.動的割り当てでは,プログラムがスタートしてから,必要なメモリを,そのつど,使われていないメモリから確保することができるという優れものらしいです. ということで,動的メモリ割り当てにはどういうものがあるのかを以下にまとめます. malloc(size) 形式 #include <stdlib.h> void *malloc(size_t size); 戻り値: …Read the Rest

clock_t型について

ども.愛澤です.前の記事で,処理時間の取得が出来ない件なのですが,以下のように,簡単なソースだと実行できます. #include <stdio.h> #include <time.h> int main(void) { clock_t start, end; time_t t1, t2; start = clock(); for (l = …Read the Rest

SIFTの実装(1) – ガウスフィルタ -

ども.愛澤です. SIFT Demo v4のプログラムを呼んでいて思ったことが!!それは「キーポイントを求めるのは,siftWin32.exeでやってるやん!俺的に重要なのはキーポイントみっけるとこのほうが重要なんやけど!」っていうことです. ということで,キーポイントを見つけるまでを自作しようと思います.はたして出来るのであろうか? まず,ガウスフィルタを実装してみました.画像処理の教科書から3×3の平滑化フィルタを実装したソースをチョコチョコ変え,やっとこさ(一応)できました. ソースコード(C言語) #include <stdio.h> #include <stdlib.h> #include <math.h> //#include <time.h> // 変数宣言 #define MAX_IMAGESIZE 1024 …Read the Rest