একাধিক ওভারল্যাপিং রাস্টারদের মোজাইকিংয়ের প্রক্রিয়াটি উন্নত করতে পাইথন ব্যবহার করে হিস্টোগ্রাম মেলাচ্ছেন?


11

আমি একাধিক ওভারল্যাপিং রাস্টারদের মোজাইকিংয়ের প্রক্রিয়াটি উন্নত করতে পাইথন ব্যবহার করে হিস্টগ্রাম মেলানোর চেষ্টা করছি। আমি যে কোডটি পেয়েছি তাতে আমার কোডটি বেজ করছি:

http://www.idlcoyote.com/ip_tips/histomatch.html

আজ অবধি, আমি দুটি সংলগ্ন রাস্টারগুলির ওভারল্যাপিং অঞ্চলটি ক্লিপ করতে এবং অ্যারে সমতল করতে সক্ষম হয়েছি।

সুতরাং আমার কাছে একই দৈর্ঘ্যের দুটি 1 টি মাত্রিক অ্যারে রয়েছে।

তারপরে আমি উপরের ওয়েবসাইটে পাওয়া তথ্যের ভিত্তিতে নিম্নলিখিত কোডটি লিখেছি। প্রদর্শিত কোডটিতে আমি জিডি এবং বিডি চিত্রগুলির জন্য দুটি খুব ছোট ডেটাসেটকে প্রতিস্থাপন করেছি।

import matplotlib.pyplot as plt
from scipy.interpolate import interp1d

bins = range(0,100, 10)

gd_hist = [1,2,3,4,5,4,3,2,1]

bd_hist = [2,4,6,8,10,8,6,4,2]

nPixels = len(gd_hist)

# here we are creating the cumulative distribution frequency for the bad image
cdf_bd = []
for k in range(0, len(bins)-1):
    b = sum(bd_hist[:k]) 
    cdf_bd.append(float(b)/nPixels)

# here we are creating the cumulative distribution frequency for the good image
cdf_gd = []
for l in range(0, len(bins)-1):
    g = sum(gd_hist[:l])
    cdf_gd.append(float(g)/nPixels) 


# we plot a histogram of the number of 
plt.plot(bins[1:], gd_hist, 'g')
plt.plot(bins[1:], bd_hist, 'r--')
plt.show()        

# we plot the cumulative distribution frequencies of both images
plt.plot(bins[1:], cdf_gd, 'g')
plt.plot(bins[1:], cdf_bd, 'r--')
plt.show()

z = []
# loop through the bins
for m in range(0, len(bins)-1):

    p = [cdf_bd.index(b) for b in cdf_bd if b < cdf_gd[m]] 
    if len(p) == 0:
        z.append(0)
    else:
        # if p is not empty, find the last value in the list p
        lastval = p[len(p)-1]

        # find the bin value at index 'lastval'
        z.append(bins[lastval])

plt.plot(bins[1:], z, 'g')
plt.show()

# look into the 'bounds_error'
fi = interp1d(bins[1:], z, bounds_error=False, kind='cubic')  
plt.plot(bins[1:], gd_hist, 'g')
plt.show
plt.plot(bins[1:], fi(bd_hist), 'r--')
plt.show()

আমার প্রোগ্রামটি হিস্টোগ্রামগুলি এবং সংশ্লেষিত ফ্রিকোয়েন্সি বিতরণগুলি সফলভাবে প্লট করে ... এবং আমি ভেবেছিলাম যে রূপান্তর ফাংশন 'জেড' সঠিকভাবে পাওয়ার ক্ষেত্রে আমার অংশ ছিল .... তবে যখন আমি 'বিডি_হিস্ট' এ বিতরণ ফাংশনটি 'ফাই' ব্যবহার করি তখন এটি জিডি ডেটাসেটের সাথে মিলানোর চেষ্টা করার জন্য এটি সবই নাশপাতি আকারের হয়ে যায়।

আমি কোনও গণিতবিদ নই এবং এটি সম্ভবত সম্ভবত আমি সুস্পষ্ট কিছু উপেক্ষা করেছি।


আমি হিস্টগ্রাম মেলানো সম্পর্কে খুব বেশি জানি না তবে আপনার সিডিএফগুলির কি 1 এর সংখ্যার (সংজ্ঞা অনুসারে) দরকার? cdf_bd = np.cumsum(bd_hist) / float(np.sum(bd_hist))
জেফ জি

উত্তর:


2

আমি প্রস্তাবিত প্রয়োগের বিষয়ে মন্তব্য করতে পারি না, আপনি গ্রাস জিআইএস 7 (এখানে একটি অ্যাডোনার) এর জন্য সম্পন্ন হিস্টগ্রাম মিলের একটি বিদ্যমান বাস্তবায়ন পরীক্ষা করতে পারেন:

https://trac.osgeo.org/grass/browser/grass-addons/grass7/imagery/i.histo.match

ম্যানুয়াল এবং উদাহরণের জন্য দেখুন

http://grass.osgeo.org/grass70/manuals/addons/i.histo.match.html

কোডটি জিপিএল 2 + ​​লাইসেন্সের আওতায় প্রকাশিত হয়েছে।


1

একটি বন্য fudge হিসাবে; আমি নিশ্চিত নই যে আপনি যদি বিভাগগুলিতে গণনা ডেটা পেয়ে থাকেন তবে আপনার পিডিএফের দরকার আছে ...
আপনি কি প্রতিটি পৃথক হিস্টোগ্রামের জন্য প্রতিটি মানকে XY মানগুলিতে রূপান্তর করতে পারবেন এবং সেই ম্যাচটি পরীক্ষা করার জন্য কোনও ধরণের রিগ্রেশন ইন্ডিকেটর ব্যবহার করতে পারবেন? উদাহরণস্বরূপ, দুটি পুরোপুরি অভিন্ন হিস্টোগ্রামের জন্য, একটি পারস্পরিক সম্পর্ক বিশ্লেষণ সরবরাহ করতে পারে এবং 1.0 এর স্কোয়ার করা হবে।


0

কিছু নমুনা ডেটা চমৎকার হবে কারণ এটি বসার থেকে আলাদা হয়ে যেতে পারে। হিস্টোগ্রামগুলি সমান করার চেষ্টা করে এখানে একটি সহজ স্ক্রিপ্ট দেওয়া হয়েছে:

https://github.com/rupestre-campos/histogram_equalize

আপনি কিছু অন্তর্দৃষ্টি পেতে পারেন।

এটি আপনার মতো সিডিএফও গণনা করে, তবে আমি চেষ্টা করেছি যে আপনি যদি ব্যান্ড-ব্যান্ড-ব্যান্ড গণনা করেন তবে এটি উন্মাদ হয়ে যাবে, সুতরাং আপনি পুরো রাস্টারকে বিবেচনা করতে পারেন।

দেখে মনে হচ্ছে আপনি রঙের রেফারেন্সের ভারসাম্য এবং বর্ণালি প্রোফাইল। এছাড়াও পিডিএফ সঠিক গণনা করার জন্য কোনও ডেটা পিক্সেল গণনা করার দরকার নেই, মোট চিত্র পিক্সেল নম্বর থেকে মুছে ফেলতে হবে।

কিছু পরীক্ষার পরে আমি 3-4 ব্যান্ড ল্যান্ডস্যাট 8 এ পুরো রাস্টার পদ্ধতির ব্যবহার এবং 16 বিট থেকে 8 বিট 0-255 পরিসরে রূপান্তরিত করে ভিজ্যুয়াল ফলাফলগুলি পছন্দ করেছি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.