क्या मैं एक लुप्त होती अल्फा परत को संरक्षित कर सकता हूं जब गदल के साथ छवियों को मोज़ेक कर सकता है?


12

मैं गदल के साथ कुछ छवियों को मोज़ेक कर रहा हूं और मोज़ेक के बीच में तेज किनारों को हटाने के लिए प्रत्येक छवि के किनारे पर एक लुप्त होती / क्रमिक अल्फा परत का उपयोग करके अंतिम परिणाम में सुधार करना चाहूंगा। मुद्दा यह है कि धीरे-धीरे अल्फा परत के साथ प्रत्येक व्यक्तिगत छवि का हिस्सा अंतिम मोज़ेक में इसके नीचे की छवियों को मास्क कर रहा है, बल्कि अर्ध-पारदर्शी होने के बजाय, जैसा कि नीचे दिखाया गया है:

क्रमिक अल्फा परतों मास्किंग छवियों के साथ मोज़ेक

आदर्श रूप से मैं एक छवि को इस क्रमिक पारदर्शिता का उपयोग करके अगले में फीका करना चाहूंगा।

मोज़ेक उत्पन्न करने के लिए मैं जो कदम उठाता हूँ, वे इस प्रकार हैं:

उन्हें जियोलोकेट करने के लिए मूल चित्रों में gcps जोड़ें और उन्हें ठीक से उन्मुख करें (बदले में प्रत्येक छवि के लिए):

gdal_translate -of GTiff -a_srs EPSG:4326 -a_srs EPSG:4326 -gcp 1616 0 -88.2728612066 40.5175787437 -gcp <etc., etc.> <original_image_with_gradual_alpha>.tif <image_with_gradual_alpha_and_gcps>.tif

नई जियोटीफ़ की छवियों को ताना दें जो ठीक से उन्मुख हों (बदले में प्रत्येक छवि के लिए):

gdalwarp -s_srs EPSG:4326 -t_srs EPSG:4326 -dstnodata 0 <image_with_gradual_alpha_and_gcps>.tif <warped_geotiff_with_alpha>.tif

सभी विकृत चित्रों को एक साथ एक मोज़ेक में मिलाएँ:

gdalbuildvrt -srcnodata 0 mosaic.vrt <warped_geotiff_with_alpha_root>*.tif
gdal_translate mosaic.vrt mosaic.tif

मैंने जो चित्र लिंक किया है वह mosaic.tif है।

नमूना इनपुट फ़ाइल के लिए gdalinfo:

Driver: GTiff/GeoTIFF
Files: dsc00562.tif
Size is 1616, 1080
Coordinate System is `'
Metadata:
  TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
  TIFFTAG_XRESOLUTION=350
  TIFFTAG_YRESOLUTION=350
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0, 1080.0)
Upper Right ( 1616.0,    0.0)
Lower Right ( 1616.0, 1080.0)
Center      (  808.0,  540.0)
Band 1 Block=1616x1 Type=Byte, ColorInterp=Red
  Mask Flags: PER_DATASET ALPHA 
Band 2 Block=1616x1 Type=Byte, ColorInterp=Green
  Mask Flags: PER_DATASET ALPHA 
Band 3 Block=1616x1 Type=Byte, ColorInterp=Blue
  Mask Flags: PER_DATASET ALPHA 
Band 4 Block=1616x1 Type=Byte, ColorInterp=Alpha

क्रमिक अल्फा परत के साथ विकृत भू-आकृति के लिए gdalinfo:

Driver: GTiff/GeoTIFF
Files: geo_dsc00603.tif
Size is 1944, 1356
Coordinate System is:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0],
    UNIT["degree",0.0174532925199433],
    AUTHORITY["EPSG","4326"]]
Origin = (-88.275727919349990,40.518829195724997)
Pixel Size = (0.000001599004942,-0.000001599004942)
Metadata:
  AREA_OR_POINT=Area
  TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
  TIFFTAG_XRESOLUTION=350
  TIFFTAG_YRESOLUTION=350
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  ( -88.2757279,  40.5188292) ( 88d16'32.62"W, 40d31' 7.79"N)
Lower Left  ( -88.2757279,  40.5166609) ( 88d16'32.62"W, 40d30'59.98"N)
Upper Right ( -88.2726195,  40.5188292) ( 88d16'21.43"W, 40d31' 7.79"N)
Lower Right ( -88.2726195,  40.5166609) ( 88d16'21.43"W, 40d30'59.98"N)
Center      ( -88.2741737,  40.5177451) ( 88d16'27.03"W, 40d31' 3.88"N)
Band 1 Block=1944x1 Type=Byte, ColorInterp=Red
  NoData Value=0
Band 2 Block=1944x1 Type=Byte, ColorInterp=Green
  NoData Value=0
Band 3 Block=1944x1 Type=Byte, ColorInterp=Blue
  NoData Value=0
Band 4 Block=1944x1 Type=Byte, ColorInterp=Alpha
  NoData Value=0

अंतिम मोज़ेक के लिए gdalinfo:

Driver: GTiff/GeoTIFF
Files: mosaic.tif
Size is 5702, 6846
Coordinate System is:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0],
    UNIT["degree",0.0174532925199433],
    AUTHORITY["EPSG","4326"]]
Origin = (-88.278946072799997,40.524561377550008)
Pixel Size = (0.000001509761581,-0.000001509761581)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  ( -88.2789461,  40.5245614) ( 88d16'44.21"W, 40d31'28.42"N)
Lower Left  ( -88.2789461,  40.5142255) ( 88d16'44.21"W, 40d30'51.21"N)
Upper Right ( -88.2703374,  40.5245614) ( 88d16'13.21"W, 40d31'28.42"N)
Lower Right ( -88.2703374,  40.5142255) ( 88d16'13.21"W, 40d30'51.21"N)
Center      ( -88.2746417,  40.5193935) ( 88d16'28.71"W, 40d31' 9.82"N)
Band 1 Block=5702x1 Type=Byte, ColorInterp=Red
  NoData Value=0
Band 2 Block=5702x1 Type=Byte, ColorInterp=Green
  NoData Value=0
Band 3 Block=5702x1 Type=Byte, ColorInterp=Blue
  NoData Value=0
Band 4 Block=5702x1 Type=Byte, ColorInterp=Alpha
  NoData Value=0

मैंने प्रक्रिया के प्रत्येक चरण और ड्रॉपबॉक्स लिंक पर अंतिम मोज़ेक के बाद एक नमूना छवि शामिल की है - मैं पूरी छवि को आवश्यक रूप से सेट कर सकता हूं।


2
Gdal_warp में अल्फा चैनल के साथ एक ज्ञात बग है। प्रत्येक रेखापुंज के अल्फा बैंड को अलग-अलग वार करने की कोशिश करें और फिर बाद में पुनर्संयोजित करें (देखें gis.stackexchange.com/questions/49706/… )
माइकल स्टिम्सन

महान, त्वरित प्रतिक्रिया के लिए धन्यवाद! क्या आपका मतलब है ggbwarp प्रदर्शन करने से पहले आरजीबी बैंड से अल्फा परत को अलग करना, फिर बाद में पुनर्संयोजन करें?
jeremyeastwood

बस। gdal_warp में अल्फा के साथ युद्ध करने के मुद्दे हैं, इसलिए RGB और RGBA के रूप में व्यवहार करें। Gdal_translate -of GTIFF -b 1 -b 2 -b 3 को अलग करने के लिए (RGBA से RGB छवि बनाता है)।
माइकल स्टिम्सन

ठीक है, तो अपने लिंक के अनुसार एक vrt के माध्यम से पुनर्संयोजन करें? जब gdalbuildvrt -separate का उपयोग करके पुनर्संयोजन किया जाता है, तो पहली छवि से 3 बैंड और दूसरी से 1 लेने का एक तरीका है, या क्या मुझे संयोजन करने के लिए एक gdalbuildvrt विकल्प का उपयोग करना चाहिए?
jeremyeastwood

1
नहीं, मुझे नहीं लगता कि कमांड लाइन टूल में से कोई भी अल्फा सम्मिश्रण कर सकता है। क्या आपके पास QGIS (या ArcGis) है, दोनों में रैस्टर कैलकुलेटर हैं जो युद्ध करने के बाद इस कार्य को कर सकते हैं। यह निश्चित रूप से उतना आसान नहीं होगा जितना कि उन्हें वीआरटी में गिराना ... मेरा मानना ​​है कि वीआरटी अंतर्निहित पिक्सल को पूरी तरह से अधिलेखित करता है, अल्फा मिश्रण नहीं; शायद यह एक ऐसी चीज है जिसे डेवलपर्स को सुधार अनुरोध के रूप में रखा जा सकता है।
माइकल स्टिमसन

जवाबों:


1

आपके वर्कफ़्लो के साथ समस्या अल्फा लेयर से जुड़ी नहीं है, लेकिन यह तथ्य है कि केवल अंतिम छवि का उपयोग तब किया जाता है जब आप एक vrt बनाते हैं।

गदलमरज डॉक

ओवरलैप के क्षेत्रों में, पिछली छवि को पहले वाले पर कॉपी किया जाएगा।

galdbuildvrt डॉक्टर:

यदि फ़ाइलों के बीच स्थानिक ओवरलैपिंग की कुछ मात्रा है, तो स्रोत मामले की सूची में दिखाई देने वाली फाइलों का क्रम: अंत में सूचीबद्ध फाइलें वे हैं जिनसे सामग्री प्राप्त की जाएगी। ध्यान दें कि नोडटा को कम प्राथमिकता वाले डेटासेट से संभावित रूप से डेटा प्राप्त करने के लिए ध्यान में रखा जाएगा, लेकिन वर्तमान में, अल्फा कंपोज़िंग करने के लिए अल्फा चैनल को ध्यान में नहीं रखा गया है (इसलिए अल्फा = 0 वाला स्रोत किसी अन्य स्रोत के शीर्ष पर दिखाई देगा) । इसे बाद के संस्करणों में बदला जा सकता है।

तो वास्तव में पारदर्शी क्षेत्र बस पारदर्शी है, और इसके तहत देखने के लिए कुछ भी नहीं है।

यदि आप कुछ सम्मिश्रण का उपयोग करना चाहते हैं, तो आपको गालवडप का उपयोग करने की आवश्यकता है: यह अल्फ़ा बैंड के साथ-साथ पिक्सेल में दी गई दूरी के आधार पर सम्मिश्रण करता है (-cblend दूरी)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.