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;
親トピック: イメージ処理および仮想モザイク