ともさんのHP >プロブラミング >自作JavaLibrary >【Java】画像の座標変換のためのクラス
Javaで画像加工
Javaでxy座標を変換するクラスを作りました。
目的は画像の複雑な処理をするため。
たとえば、こんな画像を
こんな感じに丸めてパノラマ写真にするとか。
下の写真は同一写真で構成していますが、360度撮影した画像で構成すれば
本当のパノラマ写真になります。
作ったクラスで出来る座標変換は、
平行移動、回転、xy方向の伸縮、扇型、の4つ。
平行移動
下の画像を-250y方向に移動しています。
回転移動
下の画像を-250y方向に移動した後-10度回転。
伸縮
下の画像を-250y方向に移動した後、y方向に0.5倍。
扇形の変形
下の画像を-250y方向に移動した後、扇型に変形。
こんな感じに座標変換すれば、写真を扇子にすることも出来そうですね。
以下がJAVAのソース。XY座標を変換するクラスです。画像を変換するクラスは後日UPの予定。
package tomojavalib.gazou;
/**
* XY座標を変換するためのクラス
* @author tomo
*
*/
import tomojavalib.gazou.*;
public class ZahyouHenkan {
private XY xy =null;
/**
* @param args
*/
public static void main(String[] args)
{
XY xy = new XY();
xy.setXY( 100. , 0. );
ZahyouHenkan zh = new ZahyouHenkan();
//xy = zh.kaiten(xy, 275.);
System.out.println( xy.x +" , " + xy.y );
xy = zh.ougi( xy , 110);
System.out.println( xy.x +" , " + xy.y );
}
public ZahyouHenkan()
{
xy = new XY();
}
/**
* 扇型に座標変換
* @param xy 入力座標
* @param r 中心半径
* @return
*/
public XY ougi( XY xy , double r )
{
double r2 = r + xy.y ;
double sita = xy.x / r ;
xy.x = r2 * Math.sin( sita );
xy.y = r2 * Math.cos( sita );
return xy;
}
/**
* 座標をx,y倍に伸縮する
* @param xy
* @param x
* @param y
* @return
*/
public XY sinsyuku(XY xy,double x , double y)
{
xy.x = xy.x * x;
xy.y = xy.y * y;
return xy;
}
/**
* 平行移動
* @param xy 入力座標
* @param x 移動座標
* @param y 移動座標
* @return 平行移動後の座標
*/
public XY heikou(XY xy , double x , double y )
{
xy.x = xy.x + x;
xy.y = xy.y + y;
return xy;
}
/**
* 座標を回転させる
* @param xy 入力座標
* @param sita 回転角度(°)
* @return 回転後座標
*/
public XY kaiten( XY xy ,double sita)
{
double xx = xy.x*Math.cos(sita * Math.PI / 180.0) - xy.y*Math.sin(sita * Math.PI / 180.0);
double yy = xy.x*Math.sin(sita * Math.PI / 180.0) + xy.y*Math.cos(sita * Math.PI / 180.0);
xy.setXY(xx, yy);
/*
double r = Math.sqrt( xy.x*xy.x + xy.y*xy.y ); //半径
if( r == 0. ){ return xy; }
double sita1 = Math.asin( xy.y/r ); //角度
double sita2 = (sita * Math.PI / 180.0) + sita1;//回転後角度
xy.x = r * Math.cos(sita2);
xy.y = r * Math.sin(sita2);
*/
return xy;
}
}
最終更新日: 2017-08-16 10:56:29
ともさんのHP >プロブラミング >自作JavaLibrary >【Java】画像の座標変換のためのクラス
ツイート