• ベストアンサー

バイキュービック補間のプログラム

現在画像処理のバイキュービック補間のプログラムを作成しているのですがうまくいきません。 手元にソースがないのでお見せできないのですが。 手順としては次のように行っています。 (グレースケール画像) ・点Pの周囲の16画素の色と座標を取る ・点Pと周囲の16座標の距離dを配列に入れる。  (計算式はc*c = a*a + b*bの直角三角形の定理を使用しています) 例)P00とPの距離 a = Px - P00x … xの距離 b = Py - P00y … yの距離   d = sqrt(a*a +d*d) ・距離dにより重みWを決定する。 0 <= d <= 1 W = 1 - 2・d・d + d・d・d 1 < d <= 2 W = 4 - 8・d + 5・d・d + d・d・d 2 < d W = 0 ・各重みと各距離をかけてそれらを合計したものが色になる。 SUMW += W * d[i] Color = SUMW 以上のような方法で行っています。 バイキュービックとしてこれはあっているのでしょうか? プロラムした結果としては アフィン変換後の結果はTVの嵐のような画像になってしまいます。 アフィン変換を角度0、移動0にすると、エッジのような画像が出来上がります。 なにが初心者でも画像処理がわかりやすい書籍等があったら教えていただけると助かります。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tomo316
  • ベストアンサー率35% (51/142)
回答No.1

回答ではないのですが。 有名な、OpenCvと言う画像処理用ライブラリ使ってみたらどうですか。

その他の回答 (1)

回答No.2

たぶん式が違ってます 1 < d <= 2 のとき W = 4 - 8・d + 5・d・d - d・d・d ではないでしょうか。 とりあえず、式が出てきたらエクセルか何かで、dを0~2まで0.05きざみぐらいでWを計算してグラフを描いてみることをお勧めします。

関連するQ&A

  • 同次変換について

    前回の質問で同次変換とはどのようなものかおおよそ理解する事が出来ました。 追加質問したのですが、解決できないので新たに再質問させて頂きます。 前回の質問内容:http://okwave.jp/qa/q6934077.html 変換という言葉は理解できました。 同次変換とは、1次元多い行列で表現された変換をさす。 一次元多い理由は、並進を表すため。 数学的に定義される変換は、ユークリッド変換、アフィン変換、射影変換の 3つである。 ユークリッド変換についてよく理解できないので教えてください。 これは線形変換とは異なりますよね。線形変換であれば、並進は含みませんから。 アフィン変換は、線形変換に並進を加えたものだと認識しております。 アフィン変換とユークリッド変換の違いはなんでしょうか? ユークリッド変換の方がアフィン変換より集合的に大きいことはわかるのですが・・・ また同次変換を、 X Y Z 1 と表している記述を良く見ます。 具体例を挙げると、 基準座標系を(x y z 1)、対象座標系(X Y Z 1) と表す。 対象座標系は基準座標系をx軸にθ回転、x軸に3平行移動した ものとする。 X x|1   0    0    3 | Y= y|0  cosθ  sinθ  0 |  Z  z|0  -sinθ  cosθ 0 | 1 1|0   0     0   1 | のように表されると思います。 ここで、同次変換を X Y Z W と表すとすると、変換行列の4列目は、どのようにあらわされるのでしょうか? X x|1   0    0    ? | Y= y|0  cosθ  sinθ  ? |  Z  z|0  -sinθ  cosθ ? | W ?|0   0     0   ?  | 以上、申し訳ありませんがご回答よろしくお願い致します。

  • 極座標に関する質問です。

    極座標に関する質問です。 2次元デカルト座標系の単位ベクトルをe_x,e_yとすると任意のベクトルPは、P=Ae_x+Be_yで表され るのはわかるのですが、(この時A,Bは同じ単位で例として距離とします。)これを単位ベクトルe_r,e_θの極座標を用いて、P=Ce_r+De_θで表すと、Cは原点からの距離、ではDはいったい何になるのでしょうか?(Dの単位は何?) 局座標からデカルト座標への変換は、分かるのですが、単位ベクトルを用いた極座標の表し方に疑問を感じました。 誰か詳しい方お願いします。

  • アフィン変換と領域分割

    アフィン変換やCGなどにお詳しい方がおられましたらお手数ですが下記質問にご回答をいただけないでしょうか? 大きな入力画像を小さな画像に領域分割してアフィン変換により拡大・回転処理を行いたいと考えています。 方法として、例えば256×256の画像を128×128の画像に2×2の領域分割(左上A,左下B,右上C,右下D画像)して各128×128画像についてアフィン変換を行い2倍の拡大処理を行う事を考えました。 しかし、ここで疑問がでてきました。2倍の拡大処理を行う場合、出力画像から入力画像の座標位置を算出しないとマッピングされない画素ができてしまう為、画像Aをアフィン変換する際に入力画像の4頂点よりアフィン変換で出力画像の4頂点を算出してその算出点より逆変換を開始してしまうと、画像Aと画像Bとの間にマッピングされない箇所ができてしまうと考えております。 CGの世界ではテクスチャマッピングとして各テクスチャをアフィン変換などでマッピングしているようですが、この技術を使い大きな画像を小さなテクスチャとして扱いマッピングできないかとも考えたのですがその場合も上記問題と同じ問題がでてきてしまいます。 そもそも大きな画像を小さな画像に分割してアフィン変換を行うという事は不可能なのでしょうか?

  • 形変換 アフィン変換 

    形変換 アフィン変換  前回同様の内容で質問させて頂きました。 不明な点がいくつかありますので改めて質問させて頂きます。 前回の質問内容:http://okwave.jp/qa/q5957715.html アフィン変換 ⊃ 線型変換 であるとご回答頂いたのですが、これはアフィン変換は 線形変換を含むという認識で良いでしょうか? 線形変換はアフィン変換の部分集合だと理解したのですが間違いでしょうか? また、線形変換及びアフィン変換の定義に関して ・線型変換の定義: [1]  体 K 上のベクトル空間 V 上の変換 f で、  x,y∈V, a,b∈K, について常に f(ax+by) = a f(x) + b f(y) が成り立つもの。 ・アフィン変換の定義: [2]  体 K 上のベクトル空間 V 上の変換 f で、  x,y∈V, a,b∈K, について a+b = 1 のときは f(ax + by) = a f(x) + b f(y)  が成り立つもの。 とご教示頂きました。 定義[1],[2]について考えると、 [1]が成り立てば、[2]は成り立つと思います。 [1]はa+b=1によらず、f(ax+by)=af(x)+bf(y)が成り立ちますから。 翻って、[1]ならば[2]が成り立つと言うことは線形変換がアフィン変換を含むと 言う事になりませんか?この点で混乱しています・・・ ご回答よろしくお願い致します。

  • アフィン変換の問題です、よろしくお願いします。

    幾何学的変換において2次元の座標変換をアフィン変換によって行うとき、地図座標(x,y)から画像座標(u,v)への変換において地上基準点が4点わかっているとすると変換係数を最小二乗法で求める方法はどのようになるか? というものです。 よろしくお願いしますm(__)m

  • FORTRAN…これってどんなプログラムになりますか??

    DO 10 I=1,47 CALL SUB1 10 CONTINUE STOP END SUBROUTINE SUB1 DIMENSION B1(3),B2(3),C(3),L(3),P(3) CHARACTER*12 A READ(5,50) A,B1,B2 50 FORMAT(A12,3F8.1,3F7.1) X=1.0 DO 11 K=1,300 Y1=(-1.0) Y2=0.0 DO 12 J=1,3 L(J)=(-NINT(B1(J)*10.0/B2(J))) Y1=Y1+X**L(J) Y2=Y2+L(J)*X**(L(J)-1) 12 CONTINUE W=X-Y1/Y2 IF(ABS(W-X).LT.1E-10) GO TO 13 X=W 11 CONTINUE 13 WO=W DO 14 J=1,3 C(J)=WO**L(J) 14 CONTINUE R1=0.0 DO 15 J=1,3 R2=R1+B2(J) R1=R2 15 CONTINUE D=0.0 DO 16 J=1,3 P(J)=B2(J)/R1 D=D+P(J)*ALOG(P(J)/C(J)) 16 CONTINUE E=0.0 DO 17 J=1,3 E=E+(B1(J)/B2(J)*P(J)) 17 CONTINUE WRITE(*,200) A,B2,P,E,D 200 FORMAT(1H,2X,A12,3X,3(F7.1,2X),4X,3(F9.6,X),4X,F9.6,2X,F9.6) RETURN END

  • 円と接弦定理、二重積分

    よく分からないので, 教えてください。 円 C : x^2 + y^2 = a^2 (a > 0) と, この円周上に4点 A, B, P, Q があります。 A, B の座標はそれぞれ, (0, a), (0, -a) で, P の x 座標 p と Q の x 座標 q は, それぞれ p > 0, q < 0 を満たしています。 また, 定点 E の座標を (a, -a) とします。 (1) ∠PQB = ∠PBE が成り立つことを, 円周角の定理の系 : ∠PQB = ∠PAB を用いずに証明することは可能でしょうか。 (2) 弧 BPA = D = {(x, y) | x^2 + y^2 = a^2, x ≧ 0} とするとき, ∫∫_D (y^2)/√(a^2 - x^2) dxdy の値はどうなりますか。

  • 同一直線上の座標を求めたいのですが…(2)

    昨日、丁寧に教えていただいたのですが、いく通りかのパターンで検証すると、うまく行かないパターンがあり困っています。再度教えてください。 --- 昨日の質問(No.2430366)--- 数学的な事がまったく分からないので、質問の文章もおかしいかもしれませんが、よろしくお願いします。 できれば、わかりやすく簡単な公式があれば助かります。 平面において、同一直線上にある2つのポイントA,Bの座標と、直線の角度が分かっている場合、同一直線上に新たに設けたポイントPの座標を求めるにはどうすればよいですか? Pの位置はその都度変化し、そのときのAとPの距離または、BとPの距離のどちらか一方が分かるという条件です。 --- 回答 --- 2点A,Bを通る直線の式は求められるのでPまでの 距離がわかれば連立方程式を解くことでPの座標は求められます。 平面であれば、A(x1,y1),B(x2,y2),(y2-y1)/(x2-x1)=a、AとPの距離をpとすれば、Pの座標(x、y)は  x={±p/√(1+a^2)}+x1  y={±ap/√(1+a^2)}+y1 で求められます。 ※(^2 は2乗です) ※±の意味は、PがAからみてBと同じ方向なら+、反対方向なら-でいいのではないかと思います。 --- 困っていること --- 確かに上の式で、Pの座標を求めることはできました。 しかし、あるパターンに限ってです。 Aを中心にBが第一、第二、第三、第四象限にある場合、また、座標原点の位置をいろいろ変えて試すと、この式ではPの座標が求められない場合があります。 全ての条件、パターンで通用する公式を教えてください。 または、私の検証方法が間違っているならご指摘ください。 お願いします。

  • 直交変換と回転は同じものなの?

    座標の回転が直交変換なのは任意の回転がx軸の回転とy軸の回転とz軸の回転の組み合わせであることから理解できます しかしその逆が分からないのです つまり直交変換は座標の回転なのかどうかです 3次元直交座標Aと3次元直交座標Bがある 空間に点Pがある PのAによる座標を(x,y,z)=a^Tとし PのBによる座標を(X,Y,Z)=b^Tとする そこで質問します 「U^T・U=Eかつ|U|=1である3次正方実行列Uがあり任意のPについてa=U・bならばBはAを原点を中心に回転したものである」 は正しいのですか? 正しければどうしてなのですか? 正しくなければどうしてなのですか? よろしくお願いします

  • 平面上 点の移動

    平面A(ax+by+cz+d=0)上に点P(X1,Y1,Z1)が存在して、 この点Pが、平面Aを基準とした、平面上にある直線B(a1x+b1y+c1z+d1=0)に沿って距離Lを移動した先の 座標値(X2,Y2,Z2)を計算したいのですが、どのように計算したら良いのでしょうか? よろしくお願いいたします。