emacsの謎のエラー

Tatsuya Yatagawa
こんにちはtatsyです。 実は私は隠れ(?)emacsユーザでして、gitのUnix上でプログラミングをするときはemacsを使って作業を行っているのですが、本日なぞのエラーに悩まされましたのでそれについて簡単に書きたいと思います。 そのエラーはc++のプログラムを書くときには起こらないのですが、なぜかgitのコミットコメントを編集するときだけでるという謎の挙動を見せておりました。それが、 Wrong number of arguments: called-interactively-p, ...

WinShellでTeXのコンパイル中にも編集する方法

Tatsuya Yatagawa
そろそろ修士論文なり卒業論文なりの締め切りが迫ってきているころだと思いますが、今日、WinShellの驚くべき(?)機能を見つけたので紹介したいと思います。 Winshellはとても便利ですが、1つ問題があります。それはtexファイルのコンパイル中はファイルの編集ができなくなってしまうということです。 例えばWinShellの初期設定ではF5を押すと.texファイルから.dviファイルが作られるように ...

ポインタの参照渡し

Tatsuya Yatagawa
調べてみるとC++の入門書にも書いてあるような内容らしいのですが、ポインタにも参照渡しというものが存在するということを今日初めて知りました。 プログラミングの教科書などは関数にポインタを渡して、そのポインタが指すオブジェクトの要素を変更すると、関数の外で見てもやはりポインタが指すオブジェクトの要素が変更されている、という話がよく書かれています。これは当然といえば当然で、関数の中と外で差しているポイン ...

JavaのHashSetを使う時に・・・

Tatsuya Yatagawa
年末に「世界で戦うプログラミング力を鍛える150問」という本を読んでいるのですが、その問題を解いている時にJavaのHashSetの使用方法で少し悩んだ部分があったので、ここでメモを。 一般に、ハッシュテーブルというと、オブジェクトごとに振られたハッシュ値が等しいかどうかで、オブジェクトが等価であるかどうかを判定するものだと思い込んでいたので、JavaのHashSetでもそういう実装になっているのだ ...

char* と char[] の違い

Tatsuya Yatagawa
日経ソフトウェアの2013年2月号に書かれていた記事で、C++ (あるいはC言語) のchar*とchar[]の違いについて触れてありました。普段はstd::stringしか使わないので、こんな違いがあるとは思わなかった。次のコードを見てください。 #include <stdlib.h> int main() { char* var = "this is charactors"; var[0] = 'T'; printf("%sn", var); } 一見正しそうに見えるし、実際コンパイルは通る (なんと!!) 。だけど6行目で実行時エラーが起こります。なんでもchar*に渡 ...

Image Abstraction の実装

Tatsuya Yatagawa
今回は風景写真をイラスト風の画像に変えるStylizationという技術を紹介したいと思います。漫画とかのイラストの特徴として、塗られている色が限られている(専門的に言えば色が量子化されている)ことと、輪郭線があることの2つがあげられると思います。今回紹介する方法はWinnemollerらが2006年に紹介したStylizationの手法でこの方法は、画像の抽象化とエッジ抽出の2つの手法から成り立 ...

Seam Carving の実装

Tatsuya Yatagawa
画像処理プログラミングの数ある論文の中で最もシンプルかつ結果が面白いもののひとつにSeam Carvingという手法があります。 Seam Carvingは一言で言えば画像を縮小するための手法です。画像を縮小するための手法として、バイリニア補間やバイキュービック補間などという方法が取られるのは聞いたことがあるでしょう。これらの補間法は画像のどの場所も同じ割合で小さくします。一方、Seam Carvingは、どの ...

TAUCSのコンパイル

Tatsuya Yatagawa
TAUCSは主に疎行列線形問題を解くためのライブラリです。 他にもUMFPackとかSparseLUとかいろいろなライブラリがありますが、今回はある論文を実装する際、著者がこれを使っているとのことでしたのでTAUCSを使ってみようということになりました。 TAUCSはCG界隈ではまだ結構使われているみたいなのですが、2003年からアップデートされていないので古いのは古いのですがout-of-core実 ...

Color Transfer の実装

Tatsuya Yatagawa
今回は画像処理のアルゴリズムの中でも結果が面白く、かつ実装が簡単なColor Transferを紹介します。 Color Transferは一言で言えば、例示ベースの色調変換法です。入力としては「色を変えたい画像」(目的画像)と「こういう風な色にしたいと思う画像」(例示画像)を与えます。 その2つの画像をlab (論文の色変換を見たところCIE Labとは異なるもののようです) という色の表し方を使って表現し、色ヒスト ...

UTPC 2012 E問題

Tatsuya Yatagawa
続いてはE問題です。 この問題はなかなかの曲者で、一見「なぁんだ、どうせ二分探索じゃん」と思うのですが、実はそれではうまくいきません。このような議席の割り振り問題ではアラバマのパラドックスという矛盾が起こることが知られてるらしいです。アラバマのパラドックスとは、得票数が変わらなければ総議席数が増えたときに獲得議席数はどの政党も増えるはずという予想に反して、獲得議席が減ることがあるというパラドックスで ...