Numpy.array এর বুলিয়ান মানচিত্রে 1 টি গোষ্ঠীর সংখ্যা গণনা করা হচ্ছে


16

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

প্রোগ্রামটি চিত্র ফাইলটিতে নিয়ে যায়:উদাহরণ

এবং এটি লাল কক্ষগুলির জন্য প্রক্রিয়া করে (মূলত এটি লাল রঙের জন্য একটি নির্দিষ্ট প্রান্তিকের নীচে আরজিবি মানগুলি বন্ধ করে দেয়): এখানে চিত্র বর্ণনা লিখুন

এবং এটির বুলিয়ান মানচিত্র তৈরি করে (এটি বড় হওয়ার কারণে এটির একটি অংশ পেস্ট করবে) যা উপরের প্রক্রিয়াযুক্ত দ্বিতীয় চিত্রটিতে একটি লাল পিক্সেলের সাথে যেখানেই মুখোমুখি হয় কেবল 1 রাখে।

22222222222222222222222222222222222222222
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000111111110000000000000000000000002
20000000011111100000000000000000001100002
20000000001111100000000000000000011111002
20000000000110000000000000000000011111002
20000000000000000000000000000000111111002
20000000000000000000000000000000111111102
20000000000000000000000000000001111111102
20000000000000000000000000000001111111102
20000000000000000000000000000000111111002
20000000000000000000000000000000010000002
20000000000000000000000000000000000000002
22222222222222222222222222222222222222222

আমি বুলিয়ান মানচিত্রে 1 টি গোষ্ঠীর সংখ্যা গণনা করতে আমাকে সহায়তা করার জন্য 2 ই সীমান্তে ইচ্ছাকৃতভাবে সেই ফ্রেমটি তৈরি করেছি।

আপনাদের কাছে আমার প্রশ্ন হ'ল, কীভাবে আসব আমি সেই ধরণের বুলিয়ান মানচিত্রে কোষের সংখ্যা (1 এর গ্রুপ) দক্ষতার সাথে গণনা করতে পারি? আমি http://en.wikedia.org/wiki/Connected-component_labeling খুঁজে পেয়েছি যা অত্যন্ত সম্পর্কিত এবং অনুরূপ দেখায় তবে যতদূর আমি দেখতে পাই এটি পিক্সেল স্তরে রয়েছে। মাই বুলিয়ান স্তরে। মাত্র 1s এবং 0s।

অনেক ধন্যবাদ.


সংযুক্ত উপাদান লেবেলিং হ'ল আপনার যা প্রয়োজন। আপনি কেন এটিকে আলাদা মনে করেন তা আমি জানি না, কারণ উইকিপিডিয়া নিবন্ধেও 1s এবং 0 এর অ্যারে দিয়ে শুরু উদাহরণ রয়েছে।

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

এই সমস্যা সমাধান করা হয়।

যদি আগ্রহের ঘরগুলি ওভারল্যাপিং হয়? আপনি কি নির্দিষ্টভাবে বৃত্তাকার বৈশিষ্ট্যগুলির সন্ধান করা উচিত নয় যাতে আপনি দুটি ধারাবাহিকের সাথে পৃথক করতে পারেন যা কেবল লাগাতার ব্লবগুলি সন্ধান না করে?
এন্ডোলিথ

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

উত্তর:


6

কিছুটা হিংস্র ফোর্স পদ্ধতির, তবে অ্যারের উপরে রাস্টারাইজিংয়ের পরিবর্তে অঞ্চলগুলি অনুসন্ধান করার জন্য সমস্যাটিকে পিক্সেল সংগ্রহের উপরে সূচককে উল্টিয়ে দিয়ে করা হয়েছিল।

data = """\
000000011111111000000000000000000000000
000000011111111000000000000000000000000
000000011111111000000000000000000000000
000000001111110000000001000000000110000
000000000111110000000011000000001111100
000000000011100000000000100000011111100
000000000000000000000000000000011111100
000000000000000000000000000000011111110
000000000000000000000000000000111111110
000000000000000000000000000000111111110
000000000000000000000000000000011111100
000000000000000000000000000000001000000
000000000000000000000000000000000000000"""

from collections import namedtuple
Point = namedtuple('Point', 'x y')

def points_adjoin(p1, p2):
    # to accept diagonal adjacency, use this form
    #return -1 <= p1.x-p2.x <= 1 and -1 <= p1.y-p2.y <= 1
    return (-1 <= p1.x-p2.x <= 1 and p1.y == p2.y or
             p1.x == p2.x and -1 <= p1.y-p2.y <= 1)

def adjoins(pts, pt):
    return any(points_adjoin(p,pt) for p in pts)

def locate_regions(datastring):
    data = map(list, datastring.splitlines())
    regions = []
    datapts = [Point(x,y) 
                for y,row in enumerate(data) 
                    for x,value in enumerate(row) if value=='1']
    for dp in datapts:
        # find all adjoining regions
        adjregs = [r for r in regions if adjoins(r,dp)]
        if adjregs:
            adjregs[0].add(dp)
            if len(adjregs) > 1:
                # joining more than one reg, merge
                regions[:] = [r for r in regions if r not in adjregs]
                regions.append(reduce(set.union, adjregs))
        else:
            # not adjoining any, start a new region
            regions.append(set([dp]))
    return regions

def region_index(regs, p):
    return next((i for i,reg in enumerate(regs) if p in reg), -1)

def print_regions(regs):
    maxx = max(p.x for r in regs for p in r)
    maxy = max(p.y for r in regs for p in r)
    allregionpts = reduce(set.union, regs)
    for y in range(-1,maxy+2):
        line = []
        for x in range(-1,maxx+2):
            p = Point(x, y)
            if p in allregionpts:
                line.append(str(region_index(regs, p)))
            else:
                line.append('.')
        print ''.join(line)
    print


# test against data set
regs = locate_regions(data)
print len(regs)
print_regions(regs)

ছাপে:

4
........................................
........00000000........................
........00000000........................
........00000000........................
.........000000.........1.........33....
..........00000........11........33333..
...........000...........2......333333..
................................333333..
................................3333333.
...............................33333333.
...............................33333333.
................................333333..
.................................3......
........................................

বাহ ... আমি কী বলব জানি না। খুব ঠান্ডা. এবং সম্পূর্ণরূপে কাজ করে। ধন্যবাদ পল।

এটিতে এতটা কাজ, যখন ইতিমধ্যে এটি করার কোনও ফাংশন রয়েছে Scipy, যা সম্ভবত খুব দ্রুত ^^ 'তবে সম্ভবত একটি ভাল অনুশীলন এবং এটি সাধারণভাবে এটি কীভাবে করতে হয় তা দেখায়। আমি তখন ভোট দেব।
জেলফির কালটস্টল

13

আপনি এটি ব্যবহার করতে পারেন ndimage.labelযা একটি দুর্দান্ত উপায় use এটি প্রতিটি বৈশিষ্ট্যের একটি স্বতন্ত্র মান এবং বৈশিষ্ট্যগুলির সংখ্যা সহ একটি নতুন অ্যারে প্রদান করে। আপনি একটি সংযোগ উপাদান নির্দিষ্ট করতে পারেন।

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

#flatten to make greyscale, using your second red-black image as input.
im = scipy.misc.imread('blobs.jpg',flatten=1)
#smooth and threshold as image has compression artifacts (jpg)
im = ndimage.gaussian_filter(im, 2)
im[im<10]=0
blobs, number_of_blobs = ndimage.label(im)
print 'Number of blobls:', number_of_blobs

plt.imshow(blobs)
plt.show()

#Output is:
Number of blobls: 30

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


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

1
@ ইব্রাহিম সি। কুর্ট - আমি এটি সংশোধন করতে আপডেট করেছি (আমি কেবলমাত্র লক্ষ্য করেছি!)। সমস্যাটি ছিল আপলোড করা চিত্রটি ছিল জেপিজি, এতে প্রচুর পরিমাণে নিদর্শন ছিল। স্বল্প পরিমাণে স্মুথিং এবং

মসৃণকরণ এবং প্রান্তিককরণের প্রয়োজন ছাড়াই।

এটি পুরোপুরি কাজ করে। তুমি ঠিক. আর কোনও পরিবর্তনের প্রয়োজন ছাড়াই কেবল জেপিজি থেকে পিএনজি এ পরিবর্তন করা যথেষ্ট। অনেক ধন্যবাদ. আমার কাছে এখন 2 টিরও বেশি নিখুঁত উত্তর রয়েছে। আমি কী করব এবং কী জানি না: ডি

@ ইব্রাহিম সি কুর্ট - আপনাকে ভাগ্যবান;)

6

এখানে একটি অ্যালগরিদম যা হে (পিক্সেলের মোট সংখ্যা + সেল পিক্সেলের সংখ্যা)। আমরা কেবল সেল পিক্সেলের জন্য ছবিটি স্ক্যান করি এবং যখন আমরা একটি পাই তখন সেলটি মুছে ফেলার জন্য আমরা বন্যাকে ভরাট করি।

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

(defun flood-fill (picture i j target-color replacement-color)
  ;; http://en.wikipedia.org/wiki/Flood_fill
  (when (= (aref picture i j) target-color)
    (setf (aref picture i j) replacement-color)
    (when (plusp i)
      (flood-fill picture (1- i) j target-color replacement-color))
    (when (< (1+ i) (array-dimension picture 0))
      (flood-fill picture (1+ i) j target-color replacement-color))
    (when (plusp j)
      (flood-fill picture i (1- j) target-color replacement-color))
    (when (< (1+ j) (array-dimension picture 1))
      (flood-fill picture i (1+ j) target-color replacement-color)))
  picture)


(defun count-cells (picture)
  (loop
    :with cell-count = 0
    :for i :from 0 :below (array-dimension picture 0)
    :do (loop
          :for j :from 0 :below (array-dimension picture 1)
          :unless (zerop (aref picture i j))
          :do (progn (incf cell-count)
                     (flood-fill picture i j 1 0)))
    :finally (return cell-count)))




(count-cells
  (make-array '(128 171) :element-type 'bit
              :initial-contents
              #(#171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111000000000000000000001110000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111110000000000000000000011111100
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111000000000000000000000011111100
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111100
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111110
                #171*000000000001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111110
                #171*000000000011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111110
                #171*000000000011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111100
                #171*000000000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
                #171*000000000001111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
                #171*000000000001111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011
                #171*000000000000011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011
                #171*000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111000000000000000000011
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111100000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111100000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111110000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111000000000000000000000111111110000000000000000000
                #171*000000000000000000111111000000000000000000000000000000000000000000000000000000111110000000000000000000000000000000000001111111100001111000000000011111110000000000000000000
                #171*000000000000000000111111100000000000000000000000000000000000000000000000000011111110000000000000000000000000000000000111111111100011111100000000011111100000000000000000000
                #171*000000000000000000111111100000000000000000000000000000000000000000000000000011111110000000000000000000000000000000000111111111110111111110000000000100000000000000000000000
                #171*000000000000000000111111100000000000000000000000000000000000000000000000000011111100000000000000000000000000000000000111111111110111111110000000000000000000000000000000000
                #171*000000000000000000111111100000000000000000000000000000000000000000000000000011111100000000000000000000000000000000000011111111100111111110000000000000000000000000000000000
                #171*000000000000000000111111100000000000000000000000000000000000000000000000000011111100000000000000000000000000000000000001111111100111111110000000000000000000000000000000000
                #171*000000000000000000011111100000000000000000000000000000000000000000000000000011111001110000000000000000000000000000000000011111000011111110000000000000000000000000000000000
                #171*000000000000000000010110000000000000000000000000000000000000000000000000000000000011111000000000000000000000000000000000000000000000111010000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000000000000000000000000000000000111100000000000000000000000
                #171*000000000000000000000000000000000000000000000111100000000000000000000000000000000000111100000000000000000000000000000000000000000000000000000011111111100000000000000000000
                #171*100000000000000000000000000000000000000000001111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111100000000000000000000
                #171*111100000000000000000000000000000000000000011111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111100000000000000000000
                #171*111100000000000000000000000000000000000000011111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111100000000000000000000
                #171*111100000000000000000000000000000000000000111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111100000000000000000011
                #171*111100000000000000000000000000000000000000111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011110000000000000000000111
                #171*111100000000000000000000000000000000000000011111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111
                #171*000000000000000000000000000000000000000000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011
                #171*000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111100000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111100000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111100000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111100000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000001111111100000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111100000000000000000000000000000000000000000111111000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111100000000000000000000000000000000000000111110000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111100000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111110000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000011000000000000000000000000000000000000000000000000000001111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000001111100000000000000000000000000000000000000000000000000000111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000111111110000000000000000000000000000000000000000011111100000000000000000000000000000000000000000000000000111111000000000000000000000000000000000000000000000
                #171*000000000000000111111111000000000000000000000000000000000000000011111100000000000000000000000000000000000000000000000001111111100000000000000000000000000000000000000000000
                #171*000000000000000111111110000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000001111111100000000000000000000000000000000000000000000
                #171*000000000000000111111110000000000000000000000000000000000000001111111110000000000000000000000000000000000000000000000001111111110000000000000000001111111000000000000000000
                #171*000000000000000011111110000000000000000000000000000000000000001111111110000000000000000000000000000000000000000000000001111111110000000000000000011111111100000000000000000
                #171*000000000000000001110000000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000011111100000000000000000011111111100000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000111111100000000000000000000000000000000000000000000000000001111000000000000000000011111111100000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000011111000000000000000000000000000000000000000000000000000000000000000000000000000011111111100000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111100000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111000000000000000000000000000000000000000000001111111000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111100000000000000000000000000000000000000000000100010000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000001111100000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000011111110000000000000011111111110000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000011111110000000000000011111111110000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000011111110000000000000011111111110000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000011111111000000000000011111111110000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000011111110000000000000011111111100000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000001111100000000000000010111111100000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000001111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000011111111110000000000000000000000000000000000000011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000011111111110000000000000000000000000000000000000111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000011111111110000000000000000000000000000000000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000001111111110000000000000000000000000000000000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000001111111000000000000000000000000000000000000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000000000000000000000000000000000011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000011111100000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000001111111110000000000000110000000000000000000000001111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000001111111110000000000001111100000000000000000000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000001111111110000000000111111111000000000000000000011111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000111111110000000000111111111000000000000000000111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000111111111000000000111111111100000000000000000111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000011111100001111000111111111100000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000111111100111111111100000000000000000011111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000000111111100011111111100000000000000000001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                #171*000000000000000000000000001111111100011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)))
--> 30

আরে পাসকাল, উত্তরের জন্য অনেক ধন্যবাদ। আমি দেখছি আপনার প্রোগ্রামটি খুব পরিষ্কার করে সঠিক উত্তর পেয়েছে। সমস্যাটি হ'ল সেই সাধারণ লিস্প ভাষা সম্পর্কে আমার কোনও ধারণা নেই তবে আমি তা খুঁজে বের করার চেষ্টা করব এবং পাইথনে একটি অনুরূপ স্ক্রিপি লিখব।

3

উত্তরের চেয়ে বর্ধিত মন্তব্য:

@ ইনটারজাই যেমন ইঙ্গিত করেছেন, একটি বাইনারি চিত্রে, যেমন একটিতে যেখানে কেবল 2 টি রঙ রয়েছে, পিক্সেলগুলি মান 1 বা 0 গ্রহণ করে, এটি আপনি ব্যবহার করছেন এমন চিত্রের উপস্থাপনা বিন্যাসে সত্য বা নাও হতে পারে তবে এটি সত্য আপনার চিত্রের 'ধারণাগত' উপস্থাপনায়; বাস্তবায়নের বিশদটি আপনাকে এই বিষয়টিতে বিভ্রান্ত করতে দেবেন না। এই প্রয়োগের বিশদগুলির মধ্যে একটি হ'ল আপনার চিত্রের সীমানার চারপাশে 2s ব্যবহার করা - চিত্রটির চারপাশে মৃত অঞ্চল চিহ্নিত করার একটি সঠিকভাবে বুদ্ধিমান উপায়, তবে চিত্রটির বাইনারি-নেসে গুণগতভাবে প্রভাবিত করে না।

এন, এনই, এনডাব্লু এবং ডাব্লু পিক্সেলগুলির পরীক্ষা হিসাবে: এটি উপাদান গঠনে পিক্সেলের সংযোগের সাথে কাজ করে। প্রতিটি পিক্সেল (সীমান্ত বিশেষ ক্ষেত্রে বার করুন) এর 8 টি প্রতিবেশী (এন, এস, ই, ডাব্লু, এনই, এনডাব্লু, এসই, এসডাব্লু) রয়েছে তবে কোনটি একই উপাদানে অন্তর্ভুক্তির প্রার্থী? কখনও কখনও যে উপাদানগুলি কেবল কোণে মিলিত হয় (এনই, এনডাব্লু, এসই, এসডাব্লু) কখনও কখনও সংযুক্ত হিসাবে বিবেচিত হয় না।

আপনার আবেদনের জন্য উপযুক্ত কি তা আপনাকে সিদ্ধান্ত নিতে হবে। আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি নিজে হাতে সিক্যুয়াল অ্যালগরিদমের কয়েকটি ক্রিয়াকলাপ চালাচ্ছেন, প্রতিটি পিক্সেলের জন্য বিভিন্ন প্রতিবেশী যাচাই করে যা চলছে তার অনুভূতি পেতে।

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