6.6 イメージのアファイン変換およびスケール変更
アファイン変換は、イメージの変換、スケーリング、回転、切断および反射のジオメトリ変換を使用するプロセスです。
詳細および例は、「SDO_GEOR.affineTransform」リファレンス・トピックを参照してください。
イメージのスケール変更は、イメージの行および列の次元に対応するピクセル・サイズを変更してイメージを拡大または縮小するプロセスです。イメージのスケール変更では、そのイメージのスケール変更したバージョンを作成するため、元のイメージからピクセル値をリサンプリングします。イメージのスケール変更は、次のいくつかの方法で実行できます。
-
SDO_GEOR.scaleCopyプロシージャを使用して、
scaleParam
およびscaleFactor
が入力イメージ次元または出力イメージのmaxDimSize
に適用されるように指定します。 -
SDO_GEOR.rectifyプロシージャを使用し、出力イメージの解像度を指定します。(このプロシージャをパラレルに実行できます。)
-
アファイン変換中に、SDO_GEOR.affineTransformプロシージャの
scales
パラメータを使用します。このプロシージャのscales
パラメータは、行および列に個別にスケール係数を指定できる2つの数値の配列です。(このプロシージャをパラレルに実行できます。)
例6-9 SDO_GEOR.scaleCopyを使用したイメージのスケール変更
この例では、SDO_GEOR.scaleCopyを使用してスケール変更を実行し、scaleFactor
値を2に指定します。入力イメージには、元のイメージと比較して2倍の行と2倍の列が含まれ、値はaverage16
アルゴリズムによってリサンプリングされます。イメージは、元のイメージと比較して4倍の大きさになることに注意してください。
DECLARE gr_src sdo_georaster; gr_out sdo_georaster; BEGIN select georaster into gr_src from georaster_table where georid = 7; -- Rescale delete from georaster_table where georid = 9; insert into georaster_table values(9, 're-scaled by scaleCopy', sdo_geor.init('rdt_4',9)) returning georaster into gr_out; sdo_geor.scaleCopy(inGeoRaster => null, scaleFactor => 'scaleFactor=2', resampleParam => 'resampling=AVERAGE16', storageParam => null, outGeoraster => gr_out); update georaster_table set georaster = gr_out where georid = 9; commit; END; /
例6-10 SDO_GEOR.rectifyを使用したイメージのスケール変更
この例では、SDO_GEOR.rectifyを使用してスケール変更を実行し、outResolutions
パラメータを指定します。入力イメージは、すでに幾何補正され、出力には入力と同じSRIDが含まれます。
DECLARE gr_src sdo_georaster; gr_out sdo_georaster; BEGIN select georaster into gr_src from georaster_table where georid = 7; -- Rescale delete from georaster_table where georid = 10; insert into georaster_table values(10, 're-scaled by rectify', sdo_geor.init('rdt_4',10)) returning georaster into gr_out; sdo_geor.rectify(inGeoRaster => null, pyramidLevel => null, elevationParam => null, dem => null, outSRID => null, outModelCoordLoc => null, cropArea => null, polygonClip => null, layerNumbers => null, outResolutions => sdo_number_array(1.2,1.2), resolutionUnit => null, referencePoint => null, resampleParam => 'resampling=CUBIC', storageParam => null, outGeoraster => gr_out, parallelParam => 'parallel=4'); update georaster_table set georaster = gr_out where georid = 10; commit; END; /
例6-11 SDO_GEOR.affineTransformを使用したスケール変更
この例では、SDO_GEOR.affineTransformプロシージャを使用し、イメージの行次元が2倍、列次元が2倍になるsdo_number_array(2, 2)
としてscales
パラメータを指定して、スケール変更を実行します。
DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
BEGIN
select georaster into gr1 from georaster_table where georid = 1;
insert into georaster_table values(2, 'Rotated 90 left',
sdo_geor.init('rdt0',2)) returning georaster into gr2;
sdo_geor.affineTransform(inGeoRaster => gr1,
translation => null,
scales => sdo_number_array(2,2),
rotatePt => null,
rotateAngle => null,
shear => null,
reflection => null,
storageParam => null,
outGeoraster => gr2,
parallelParam => 'parallel=4');
update georaster_table set georaster = gr2 where georid = 2;
commit;
END;
親トピック: イメージ処理および仮想モザイク