রাস্টার পিক্সেলগুলি কীভাবে তাদের মানগুলিতে বাফার করবে?


28

বাম দিকের পিক্সেলগুলি গাছের অবস্থান এবং তাদের সম্পর্কিত মুকুট রেডিয়িকে উপস্থাপন করে (অর্থাত পিক্সেলের মান 2 - 5 থেকে শুরু করে)। আমি এই রাস্টার পিক্সেলগুলি তাদের মুকুট ব্যাসার্ধের মান দ্বারা বাফার করতে চাই। ডানদিকে চিত্রটি আমি কেবল রাস্টার প্রক্রিয়াজাতকরণ পদ্ধতি ব্যবহার করে সম্পন্ন করার আশা করছি ।

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

পিক্সেলগুলির মানগুলি দ্বারা একটি ভাল পদ্ধতি কী?

এখানে চিত্র বর্ণনা লিখুন


2
আপনি কি রাস্টারকে পয়েন্টগুলিতে রূপান্তরিত করার চেষ্টা করেছেন, তারপরে ক্ষেত্রের মাধ্যমে বাফার করে আবার রাস্টারকে রূপান্তর করতে পারেন?

2
এটি উপলব্ধি করতে সহায়তা করে যে এটি একটি স্থানীয় নয় এমন অপারেশন, কারণ অ-লোকালাইটি দেখায় যে গণনাটি কীভাবে সম্পাদন করা যায় তার উপর সহজাত সীমাবদ্ধতা রয়েছে। উদাহরণস্বরূপ, আপনার আউটপুট প্রায় সর্বত্র সর্বত্র পরিবর্তিত হবে যদি ইনপুটটিতে কেবল একটি একক বিচ্ছিন্ন পিক্সেল একটি বড় মানকে পরিবর্তন করতে হয়। সুতরাং, যদি আপনি ইনপুট মানগুলির উপর বিধিনিষেধ সম্পর্কে জানেন তবে দয়া করে সেগুলি ভাগ করুন, কারণ এটি উন্নত সমাধানের দিকে নিয়ে যেতে পারে। উদাহরণস্বরূপ, আপনার সমস্ত ইনপুট মানগুলি কি সর্বদা {2,3,4 set সেটে থাকবে?
হোবার

@ ড্যান প্যাটারসন এইভাবেই আমি ডানদিকে চিত্রটি নিয়ে এসেছি। তবে, আমি ভেক্টর অপারেশন পুরোপুরি এড়াতে এবং এই পদক্ষেপগুলি এড়াতে চেষ্টা করছি।
হারুন

2
@ শুভ এই ডেটাসেটটি ভেরিয়েবল মুকুট ব্যাসকক্ষ সহ গাছকে উপস্থাপন করে। দেওয়া হয়েছে, গাছের মুকুট ব্যাসার্ধের পরিমাপ বাস্তবিকভাবে 1-10 থেকে পৃথক হতে পারে। আমার আরও যোগ করা উচিত যে বাফার আউটপুটটি মুকুট অনুপস্থিতির জন্য কেবল 0 এবং মুকুট উপস্থিতির জন্য 1 টির দরকার।
হারুন

1
ঠিক আছে ধন্যবাদ. দেখে মনে হচ্ছে যে আপনি পয়েন্টের 3-বাফারকে মান 3 এর সাথে, পয়েন্টের 4-বাফারকে 4 এর সাথে এবং 5-পয়েন্টের 5-বাফারকে 5 মান দিয়ে মিলিয়ে উদাহরণ আউটপুট তৈরি করেছেন You মান 2 সহ পয়েন্টগুলি প্রক্রিয়া করার জন্য) এই প্রক্রিয়াটি কেবল আপনার প্রশ্নের উত্তর দেয় না, তবে (আমি বিশ্বাস করি) এটি স্থানিক বিশ্লেষকটিতে উপলভ্য সরঞ্জামগুলি ব্যবহার করে সবচেয়ে সহজ সমাধান।
হোবার

উত্তর:


14

এখানে একটি বিশুদ্ধ রাস্টার সমাধান Python 2.7ব্যবহার numpyএবং scipy:

import numpy as np
from scipy import ndimage
import matplotlib.pyplot as plt

#create tree location matrix with values indicating crown radius
A = np.zeros((120,320))
A[60,40] = 1
A[60,80] = 2
A[60,120] = 3
A[60,160] = 4
A[60,200] = 5
A[60,240] = 6
A[60,280] = 7

#plot tree locations
fig = plt.figure()
plt.imshow(A, interpolation='none')
plt.colorbar()

#find unique values
unique_vals = np.unique(A)
unique_vals = unique_vals[unique_vals > 0]

# create circular kernel
def createKernel(radius):
    kernel = np.zeros((2*radius+1, 2*radius+1))
    y,x = np.ogrid[-radius:radius+1, -radius:radius+1]
    mask = x**2 + y**2 <= radius**2
    kernel[mask] = 1
    return kernel

#apply binary dilation sequentially to each unique crown radius value 
C = np.zeros(A.shape).astype(bool)   
for k, radius in enumerate(unique_vals):  
    B = ndimage.morphology.binary_dilation(A == unique_vals[k], structure=createKernel(radius))
    C = C | B #combine masks

#plot resulting mask   
fig = plt.figure()
plt.imshow(C, interpolation='none')
plt.show()

ইনপুট: এখানে চিত্র বর্ণনা লিখুন

আউটপুট: এখানে চিত্র বর্ণনা লিখুন


1
প্রসারণ পদ্ধতির জন্য +1! এটি নিকটস্থ পয়েন্টগুলির সাথেও কাজ করে।
আন্তোনিও ফ্যালকিয়ানো

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

8

ভেক্টর ভিত্তিক পদ্ধতির

এই কাজটি তিনটি ধাপে করা যেতে পারে:

দ্রষ্টব্য: বাফার ক্ষেত্রটি ব্যবহার করে প্রতিটি মুকুট ব্যাসার্ধের মানের জন্য বাফারের গণনা এড়ানো যায়।


রাস্টার ভিত্তিক পদ্ধতির

ভেক্টর-ভিত্তিক সমাধানটি এড়িয়ে এই সমস্যাটি নিকটবর্তী প্রতিবেশীদের উপর ভিত্তি করে এক ধরণের সেলুলার অটোমেটা ব্যবহার করার পরামর্শ দেয় । ধরে নিই যে সমস্ত কালো পিক্সেল শূন্য, পিক্সেলগুলি বর্গক্ষেত্রযুক্ত এবং তাদের আকার 1 এর সমান (বা, বিকল্পভাবে, যথাযথভাবে মাপা হয়), গ্রহণ করার নিয়মগুলি খুব সহজ:

  1. যদি পিক্সেল মান ( VALUE) 1 এর চেয়ে বেশি হয় VALUE-1তবে এর মান হয়ে যায় এবং তার আশেপাশের পিক্সেলগুলি বিবেচনা করুন। যদি তাদের মানগুলি এর চেয়ে কম হয় তবে VALUE-1এই পিক্সেলগুলি জন্মগ্রহণ করে বা বৃদ্ধি পায় এবং তাদের মান হয়ে যায় VALUE-1। অন্যথায়, এই পিক্সেলগুলি বেঁচে থাকে এবং অপরিবর্তিত থাকে।
  2. যদি VALUE<=1, কিছুই না করেন (পিক্সেলটি মারা গেছে!)।

এই নিয়মগুলি পর্যন্ত পিক্সেল মরে, অর্থাত্ তাদের মান 0 বা 1. সুতরাং সমান প্রয়োগ করা হয়নি N-1গুণ, যেখানে Nআপনি ইনপুট রাস্টার আছে সর্বোচ্চ মান। এই অ্যাপ্রোচটি বেশ সহজেই পাইথন এবং নিম্পির কিছুটা দিয়ে প্রয়োগ করা যেতে পারে।


1
আফসালিকানো প্রতিক্রিয়ার জন্য ধন্যবাদ। এই পদ্ধতিটি হ'ল আমি কীভাবে চিত্রটি ডানদিকে তৈরি করেছি এবং একটি ভেক্টর পদ্ধতির ব্যবহার করেছি - এটি আমি এড়াতে চাইছি।
হারুন

1
ঠিক আছে অ্যারন, এখানে এখন একটি রাস্টার ভিত্তিক পদ্ধতি রয়েছে। আশাকরি এটা সাহায্য করবে.
আন্তোনিও ফ্যালকিয়ানো

7

আরেকটি বিকল্প হ'ল প্রতিটি পিক্সেল মানের জন্য পৃথক রেস্টারগুলি তৈরি করা হবে, এই ক্ষেত্রে একটি শর্তযুক্ত 4 জন রাস্টার। তারপরে রাস্টারগুলির মান অনুসারে পিক্সেল গণনা দ্বারা রাস্টারগুলি প্রসারিত করুন (সম্ভবত কোনও মান তালিকার উপরে পুনরাবৃত্তি করে)। শেষ পর্যন্ত, বৃক্ষের মুকুটগুলির জন্য একটি বাইনারি রাস্টার তৈরি করতে, রাস্টারগুলিতে (বীজগণিত বা স্থানিকভাবে) যোগ দিন।


1
এই ধারণাটি সঠিক। বিশদটি উন্নত করা যেতে পারে: (1) নির্বাচনটি একটি প্রদত্ত মুকুট ব্যাসার্ধের গাছগুলির বাইনারি (0,1) সূচক তৈরি করে। (২) প্রদত্ত ব্যাসার্ধের একটি বিজ্ঞপ্তি পাড়া ব্যবহার করে - সেই নির্বাচনের কেন্দ্রবিন্দু এফএফটি ব্যবহার করে দ্রুত গণনা করা যায়। (3) ফোকাল যোগফলগুলি (পয়েন্টওয়াইজ) যোগ করা এবং এটি 0 টির সাথে তুলনা করা পছন্দসই বাফার দেয়।
শুক্রবার

7

রাস্টারে এটি করা একটি চ্যালেঞ্জিং প্রশ্ন কারণ আপনার বাফারের আকার নির্ধারণের জন্য পিক্সেলের মানটি ব্যবহার করার সুযোগ নেই। সুতরাং ইতিমধ্যে আপনি যেমন বলেছিলেন প্রতিটি মানের জন্য আপনার ফোকাল ফিল্টারটি করা দরকার।

এটি কেবলমাত্র 3 টি ফিল্টার দিয়ে করার সম্ভাব্য উত্তর এখানে দেওয়া হয়েছে (আমি কম খুঁজে পেলাম না), তবে হুইবারের দ্বারা উল্লিখিত হিসাবে পুরোপুরি নয়: যখন বৃক্ষগুলি একে অপরের নিকটে থাকে তখন আপনার বাফারগুলি কেটে দেওয়া হবে।

1) সম্পাদনা: ইউক্যালিডিয়ান বরাদ্দ (এটি সম্পূর্ণরূপে সমস্যার সমাধান করে না, কারণ এটি ছোট গাছগুলির আশেপাশে বাফারগুলি কেটে ফেলেছে, তবে এটি আমার প্রথম সমাধানের নিদর্শনগুলির চেয়ে ভাল)।

2) প্রতিটি পিক্সেলের চারপাশে ইউক্যালিডিয়ান দূরত্ব

3) শর্তাধীন বিবৃতি সহ রাস্টার ক্যালকুলেটর (মানচিত্র বীজগণিত)

Con("allocation_result" > ("distance_result" / pixel_size) , 1 , 0)

দ্রষ্টব্য যে আপনি ব্যাসার্ধের ক্ষেত্রে আপনার প্রয়োজনের উপর নির্ভর করে ঘাঁটটি সামঞ্জস্য করতে পারেন (কেন্দ্রীয় পিক্সেলের সাথে বা সহ)


+1 এটি একটি সৃজনশীল পদ্ধতির। আমি এই পদ্ধতিটি ব্যবহার করে স্কেল করা সম্ভব কিনা তা পরীক্ষা করে দেখব।
হারুন

2
ইউক্লিডিয়ান দূরত্বের পদ্ধতির কাজ করবে না, কারণ এটি কেবল নিকটতম গাছের দূরত্বকেই গণনা করে , এটি এমন গাছের দূরত্ব নয় যাঁর মুকুটটি বিন্দুটি আবৃত করে।
হোয়বার

2

আপনি আর্কজিআইএস এর সম্প্রসারণ সরঞ্জামটি ব্যবহার করবেন না কেন আশ্চর্য ?

import arcpy
from arcpy.sa import *

raster_in  = r'c:\test.tif'
raster_out = r'c:\test_out.tif'

outExpand1 = Expand(raster_in, 2, 2)
outExpand2 = Expand(outExpand1, 3, 3)
outExpand3 = Expand(outExpand3, 4, 4)
outExpand4 = Expand(outExpand4, 5, 5)

outExpand4.save(raster_out)

ওভারল্যাপিংয়ের ক্ষেত্রে: সর্বশেষতম expandকমান্ডটি পূর্ববর্তীগুলি কভার করবে।


2

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


আমি জানি এটি কোনও প্রশ্নের বিষয় নয় তবে, আপনি গ্রাফিক আদিমতা এবং স্ক্যান লাইন বহুভুজ ফিল সম্পর্কে আরও জানতে চান? Cirles জন্য এটি খুব সহজ। উত্তল সংমিশ্রণটি একটি
বুজওয়ার্ড

বেসিক রাস্টার অপারেশন ব্যবহার করে এটি কীভাবে প্রয়োগ করা হবে?
হোয়বার

আপনি যদি রাস্টার স্থানটিতে এটি পরিচালনা করার চেষ্টা করেন তবে বৃত্ত পয়েন্টগুলি নির্ধারণ করুন, তাদের y বা x দ্বারা বাছাই করুন এবং স্থানটি একটি সরল রেখায় পূরণ করুন (স্ক্যান লাইন) বৃত্তটি পূরণ করার পথে। ত্রিভুজাকার পদ্ধতির মধ্যে, আপনি যদি ত্রিভুজাকার ক্ষেত্রগুলির সান্নিধ্য অনুসারে বৃত্তটি তৈরি করেন এবং ত্রিভুজটি পূরণ করার চেষ্টা করেন তবে বিন্দুটি ভিতরে বা বাহুতে (উত্তল সংমিশ্রণ) এবং অন্যভাবে থাকলে আপনার একটি পরীক্ষা প্রয়োজন need এবং "জিআইএস" অ্যাপোচ-তে, বহুভুজ (ক্লক ওয়াইজ ওরিয়েন্টেড বহুভুজ) নির্মাণ এবং একটি ইউনিয়ন তৈরি করা তৃতীয় (আইএমও সর্বাধিক গণনীয় ব্যয়বহুল) is
হাকফিন

পরিষ্কার হতে হবে: এবং "জিআইএস" অ্যাপোচ ... ইউনিয়ন, ছেদ, স্পর্শ .... এর মতো একটি বীজগণিতীয় অপারেশন করুন তৃতীয় আইএমও সবচেয়ে গণ্য ব্যয়বহুল।
হাকফিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.