タグ

algorithmとprogrammingに関するjjzakのブックマーク (291)

  • 傾き検出のアルゴリズム - myashikiの日記

    アプリの傾き検出のアルゴリズムメモ (1)指定のスライスで白->黒となる点を抽出 縦、横でそれぞれ左右、上下の両端から200ポイントで400点x2のエッジ情報を抽出 (2)縦、横それぞれをハフ変換して直線式の傾きを求める ハフ変換で得られる直線情報の上位10点から間違っていそうな点をのぞき平均をとって傾きを抽出。縦横で重みの多い方を採用 いじょうでふ

    傾き検出のアルゴリズム - myashikiの日記
  • 【インフォシーク】Infoseek : 楽天が運営するポータルサイト

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

  • 画像・エッジ検出 - ディジタル信号処理講座

    このページを見るときは固定等幅フォントを使用してください エッジ検出とは エッジは物体の外縁を表す線ですが,画像処理では画像を特徴づける線要素という感じでしょうか. エッジ検出(又はエッジ抽出)は画像処理のなかでも基的な操作の1つです. 特定の物体を取り出したり,複雑な画像認識,画像理解ための手がかりとして使われます. エッジは信号において急激な変化がある場合に領域を分割する要素として表現されます. 微分法によるエッジ検出 エッジは信号が変化をする部分ですので,信号の変化分を取り出す微分(Gradient)を用いるのが一般的な方法です. 画像(2次元)の微分によるエッジ検出は以下のようになります. 【各方向の微分量算出】 fx = s(i+1,j) - s(i,j) fy = s(i,j+1) - s(i,j) 【画像のエッジの強さ】 ______________ y(i,j) = √f

    jjzak
    jjzak 2010/08/24
  • 「言語処理のための機械学習入門」を参考に各種モデルに対するEMアルゴリズムを実装したよ - nokunoの日記

    Amazonにもレビューを書いたのですが、高村さんの「言語処理のための機械学習入門」を読みました。実はこのを読むのは2回目で、1回目はドラフト版のレビューをさせていただく機会があったのですが、そのときは「言語処理研究者のための機械学習入門」というタイトルで、ちょっと敷居が高いのではないかとコメントしたら「研究者」の部分が削られたという経緯があったりしました。 それはともかくとして、以前読んだときは時間もなくて実装までする暇はなかったのですが、今度はもうちょっとじっくり読みたいなということで、このブログに書いてみようと思います。EMアルゴリズムは教師なし学習を確率モデルと最尤推定でやろうとするときに必ず出てくる手法で、隠れ変数や欠損値を含む色々なモデルに適用できる汎用的なフレームワークになっています。一般的には混合ガウス分布の場合をまず説明して、それがk-means法の一般化した形になって

  • Skip Graph の concurrent JOIN を考える - その3 - higepon blog

  • アルゴリズムの紹介

     ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意して

  • enbug diary(2009-09-23)

    _ 連想配列に使うハッシュ関数 unladen-swallowのissue を見て、ちょっと気になったので、昨今のハッシュ関数の事情を調べていたのですが、 一言でいうと、難しい、です。 Pythonのハッシュ関数は、今でも FNV っぽいアルゴリズムを用いています。 ただし、実際には独立して開発されていて、たまたま似ているというだけだそうです。 で、 Hash functions: An empirical comparison なんかを見ると、 Murmur2 が汎用的には奨励されていて、 FNVよりも大体速くて、場合によっては衝突も少ないという結果が出ているみたいです。 では、なぜPythonがあいもかわらずFNVっぽいのかというと、 Python 3000のハッシュアルゴリズムの議論 でも見られるように、「ランダムなハッシュ関数は望ましくない(かもしれない)」というのが根拠らしいです

  • 類似画像検索システムを作ろう - 人工知能に関する断創録

    C++版のOpenCVを使ってカラーヒストグラムを用いた類似画像検索を実験してみました。バッチ処理などのスクリプトはPythonを使ってますが、PerlでもRubyでも似たような感じでできます。 指定した画像と類似した画像を検索するシステムは類似画像検索システムと言います。GoogleYahoo!のイメージ検索は、クエリにキーワードを入れてキーワードに関連した画像を検索しますが、類似画像検索ではクエリに画像を与えるのが特徴的です。この分野は、Content-Based Image Retrieval (CBIR)と呼ばれており、最新のサーベイ論文(Datta,2008)を読むと1990年代前半とけっこう昔から研究されてます。 最新の手法では、色、形状、テクスチャ、特徴点などさまざまな特徴量を用いて類似度を判定するそうですが、今回は、もっとも簡単な「色」を用いた類似画像検索を実験してみます

    類似画像検索システムを作ろう - 人工知能に関する断創録
  • 紫ログ:GaucheでR風に行列演算を記述する - livedoor Blog(ブログ)

    【C.M.ビショップ「パターン認識と機械学習(PRML)」読書会の情報はこちら】 行列に関する操作は、R をマスターする基です。関連する Tips を脈絡なくできるだけ集めたいと思います。お気づきの正統派・裏技テクニックをお寄せください。一部重複はむしろ好ましいと思います。 PRMLに出てくるアルゴリズムを実装するには行列演算が書きやすくないと辛いので、Rの記法を参考にしながら試行錯誤中。 夢見ている書式仕様 matrix(): 要素ベクトルを与えて行列を作る: matrix(1:12, nrow=3, ncol=4) → (%matrix (iota 12 1) :nrow 3 :ncol 4) → (%matrix (%: 1 12) :nrow 3 :ncol 4) matrix(1:12, nrow=3) # 自動的に ncol=4 とされる → (%matrix (%: 1 1

  • 紫ログ:PRML: §1.1 多項式曲線フィッティング - livedoor Blog(ブログ)

    【C.M.ビショップ「パターン認識と機械学習(PRML)」読書会の情報はこちら】 Rを参考にして書いた、Gaucheで行列演算を記述するためのオレオレライブラリを使い、1章の最初の多項式曲線フィッティングから復習コーディング中。 訓練データ集合(sin(2πx) + ガウス分布ノイズ)と元の曲線: 次数M=0〜9でフィッティング: 次数M=9、N=15とN=100の比較: 次数M=9、ペナルティ項つき: ソース: (require "./lib/random") (require "./lib/util") (require "./lib/gd-graph") (require "./lib/mac") (require "./lib/matrix") ;; [0..1]の範囲で均一に分布する乱数 (define rand-0to1 (make-uniform-rand 0 1)) ;;

  • 【コラム】3Dグラフィックス・マニアックス (76) 3Dモデルの変形までが可能な動的PRT(5)〜SH Exp演算の大胆な近似による高速化 | パソコン | マイコミジャーナル

    SH Exp演算の大胆な近似による高速化 SH Exp演算については定義通りのまじめな演算を行うのも一案だが、リアルタイムのパフォーマンスを向上させるために、ここでも近似手法を導入する。 ある値の指数は級数展開すると下図のように表すことができる。この計算はべき乗や除算が含まれるために計算負荷が高い。そこでSHEXP技法の開発研究グループでは最初の2つの項だけで近似するという大胆な手法を採択した。しかし、そのままだと誤差が大きすぎるため、重み付きの線形和で近似をする。 SHEXP演算を最初の2項だけで近似する大胆な手法を導入してパフォーマンスを稼ぐ 2つの線形項に掛ける2つの重み係数は、事前計算でテーブル化して用意しておく。となれば、この重み係数が重要になってくる。 SHEXP技法の研究開発グループでは、この2つの重み係数の算出には一般的な数値計算で用いられる最小二乗法を用いた。 ある遮蔽情

  • Rabin Karp アルゴリズムでコード重複の検出 blog.bulknews.net

    Rabin Karp アルゴリズムでコード重複の検出 YAPC::NA で会った Fotango の Norman Nunley がつくってる Algorithm::RabinKarp モジュールが面白げです。 Rabin Karp 文字列探索アルゴリズム (wikipedia) を使って文字列のハッシュ(ダイジェスト)をチェックし、同一の値を示す部分を重複しているとみなしてレポートしてくれます。つまり、プロジェクト内のコードのコピーペーストを検出するツールとして使えるというわけ。 ためしに Plagger で試してみた結果は rabin.txt のようになりました。プラグインの register_hook や CustomFeed での Feed オブジェクトの生成など、イディオム的に使う部分が大半になってしまっていますが、いくつか実際コピペで再利用しているコードが検出できています。 c

  • 転置インデックスの圧縮 - tsubosakaの日記

    Managing Gigabytes勉強会で転置インデックスの圧縮の話が出たので実際に圧縮を行った場合にどれくらいのサイズになるかを計測してみた。 利用したデータは英語版Wikidiaの全記事で 文書数 2,872,589 単語数 2,735,620 転置インデックスのポインタの数 397,603,176 ぐらいのサイズのデータです。 無圧縮の転置インデックスのフォーマットは 単語ID,文書数,文書1,....文書N, 単語ID,...で各項目4byteとなっており、1.5Gぐらいのサイズになっています。 これに対して各圧縮アルゴリズムを適用した結果は アルゴリズム 無圧縮 Variable Byte Code unary符号 γ符号 δ符号 Rice Coding pforDelta(仮) サイズ 1537MB 497MB 239475MB 474MB 407MB 367MB 455MB

    転置インデックスの圧縮 - tsubosakaの日記
  • unbland.org blog » Blog Archive » 四分木で 2D の衝突判定を最適化

    今回は四分木 (Quad Tree) について。 オブジェクト同士の衝突判定を行う際、みなさんはどうしていますか? 一番最初に思い付く方法は衝突対象のオブジェクトを配列にでも入れて、総当たりで Sprite#hitTestObject() なんかで判定してしまおうという方法だと思います。この方法でも、対象のオブジェクト数が少なければ特に問題にはなりません。しかし対象のオブジェクト数が多かった場合、総当たりで計算を行うという方法では計算量が膨大になってしまい、とても現実的とは言えません。 Sprite#hitTestObject() などの衝突判定を行う前に、どうにか衝突の可能性があるオブジェクトを限定出来ないか? そんな時には四分木を使えば計算量が減らせます。 概念的には miscellaneous さんの「四分木」エントリーが参考になります。 四分木を構築する方法で一般的(?)なものは

  • sary: a suffix array library and tools

    What is sary? sary is a suffix array library and tools. It provides fast full-text search facilities for text files on the order of 10 to 100 MB using a data structure called a suffix array. It can also search specific fields in a text file by assigning index points to those fields. Table of Contents What's New Characteristics Brief Introduction to Suffix Array libsary Reference Manual Using the I

  • 横着プログラミング 第9回: sary: Suffix Array のライブラリとツール

    最終更新日: 2002-12-18 (公開日: 2002-12-18) Unix Magazine 誌に 2002年1月号から 2003年2月号にかけて連載し ていた記事の元の原稿です。 私にフローチャートだけを見せて、テーブルは見せないとしたら、 私はずっと煙に巻かれたままになるだろう。逆にテーブルが見せて もらえるなら、フローチャートはたいてい必要なくなる。 -- Frederick P. Brooks Jr. *1 プログラミングにおいてはデータ構造が重要であり、正しいデータ 構造を選択すればアルゴリズムは自明なものとなる、という主張が ある。Rob Pike*2 の "Notes on Programming in C" *3 によると、現実的なプログラムに必要なデータ構造は次の 4つであ るという。 配列 (array) 連結リスト (linked list) ハッシュテーブル

  • クライアント最前線 作って理解するAjax(第3回)

    前回は,インクリメンタル検索を実現するAjaxアプリケーションのクライアント・サイドの実装を紹介しました。今回は,サーバーとして稼働するCGIプログラムを作成します。このCGIプログラムは,クライアントから送られてきたクエリーに基づいてテキストを検索し,その結果を返送します。Ajaxアプリケーションは通常のWebアプリケーションに比べて,サーバー・アクセスが増加しがちです。このためサーバーをいかに効率よく実装できるかが,サービスを快適に提供できるかどうかを左右します。サーバー負荷を下げる手法についても考えてみましょう。 テキスト検索にsaryを使用 みなさん,テキスト検索といえばどんな方法を思いつくでしょうか。単純なところではgrepコマンドの利用が考えられますし,データをMySQLやPostgreSQLなどのRDBMSで管理して,そのRDBMSの検索機能を利用する手もあります。また,N

  • お手軽PerlでSuffixArrayに挑戦

    試しにPERLでSuffixArrayついでにソートの勉強 下記のページを参考にしている http://www.namazu.org/~satoru/unimag/9/ ここに記述されているコードは、実験のために書かれているので、 へんなところはご容赦を... インデックスを作ってみる Cで書かれたサンプルをperlでかいてみた。 PERLでもquicksortの関数はあるが、一応PERLでかいてみた。 バイナリー形式でインデックスファイルを書き出している。 テストのためのサンプルプログラムなので、書き出したあとよみだして表示している。 pushを使って配列を拡大しているが、これってスピード的にいいのだろうか? pack,unpack関数はいろいろ使いでありそう!! 1: #!/usr/bin/perl 2: 3: #2003/03/14 4: #UNIXマガジン2002 10月号 横着プ

  • Suffix Array

    TopCoder SRM187、 DNAMultiMatcher は、 Stringが3つ(それぞれの長さは最大2500)与えられたとき、 3つ全てに含まれる最長のSubstringの長さを求めなさい。 という問題です。これに対して、 長さをBi...

  • Java で Suffix Array - odz buffer

    なんか Java で Suffix Array なコードというリクエストがあったので簡単に。 とりあえず Suffix Array の構築だけ。効率とか一切無視で。 import java.io.IOException; import java.util.Arrays; import java.util.Comparator; import java.util.regex.Matcher; import java.util.regex.Pattern; public class SuffixArrayBuilder { public void build(String text, Integer[] sa) { Arrays.sort(sa, new SuffixComparator(text)); } private static class SuffixComparator imple

    Java で Suffix Array - odz buffer