গাছের মাইক্রোস্কোপি চিত্রে স্টোমাটা সন্ধান করুন


26

চিত্র প্রক্রিয়াকরণ বিশেষজ্ঞদের জন্য এখানে একটি প্রশ্ন।

আমি একটি কঠিন কম্পিউটার ভিশন সমস্যা নিয়ে কাজ করছি। কাজটি হল ডিআইসি মাইক্রোস্কোপি চিত্রগুলিতে স্টোমাটা (নীচে চিহ্নিত) গণনা করা। এই চিত্রগুলি মোর্ফোলজিকাল ক্রিয়াকলাপ এবং প্রান্ত সনাক্তকরণের মতো বেশিরভাগ পৃষ্ঠের চিত্র প্রক্রিয়াকরণের কৌশলগুলির সাথে প্রতিরোধী। এটি অন্যান্য ঘর গণনা কার্য থেকেও আলাদা।

আমি ওপেনসিভি ব্যবহার করছি। আমার পরিকল্পনাটি স্টোমাটা বৈষম্যের জন্য সম্ভাব্য কার্যকর বৈশিষ্ট্যগুলি পর্যালোচনা করা।

  • টেক্সচার শ্রেণিবদ্ধ
    • ডিসিটি (বিচ্ছিন্ন কোসাইন ট্রান্সফর্ম / ফ্রিকোয়েন্সি-ডোমেন বিশ্লেষণ)
    • এলবিপি (স্থানীয় বাইনারি নিদর্শন)
  • এইচওজি (ওরিয়েন্টেড গ্রেডিয়েন্টের হিস্টোগ্রাম)
  • শক্তিশালী বৈশিষ্ট্য সনাক্তকারী (আমি সন্দেহবাদী)
    • হ্যারিস কর্নার
    • সিফ্ট, এসআরএফ, স্টার, ইত্যাদি
  • হার ক্যাসকেড শ্রেণিবদ্ধ / ভায়োলা-জোনস বৈশিষ্ট্য

এবং সম্ভবত একটি উপন্যাস বৈশিষ্ট্য বর্ণনাকারী নকশা। আমি আপাতত একটি শ্রেণিবদ্ধের বাছাই ছাড়ছি।

আমি কি মিস করেছি? কীভাবে সমাধান করবেন? অনুরূপ অবজেক্ট সনাক্তকরণ সমস্যার সমাধানগুলি খুব সহায়ক হবে।

নমুনা চিত্র এখানে

stomata

ব্যান্ডপাস ফিল্টার পরে: ব্যান্ডপাস ফিল্টার

ক্যানি প্রান্ত সনাক্তকরণ আশাবাদী নয়। কিছু চিত্র অঞ্চল মনোযোগের বাইরে: ক্যানি প্রান্ত সনাক্তকরণ


1
স্টোমাটা খোঁজার চেষ্টা না করে আপনি কি অদ্ভুত লাইনগুলি সরিয়ে দেওয়ার চেষ্টা করতে পারেন?
এন্ডোলিথ

1
আপনার কতগুলি চিত্র প্রক্রিয়া করতে হবে? এটি কত দ্রুত হওয়া দরকার? এটি কীভাবে স্বয়ংক্রিয় হবে?
এন্ডোলিথ

1
এটি খুব দ্রুত হতে হবে না। আমরা 1000 টি চিত্রের ক্রমে প্রক্রিয়াজাত করছি। এটি স্বয়ংক্রিয় হওয়া উচিত - একটি ডিরেক্টরিতে চিত্রগুলি ফেলে দিন।
ম্যাট এম।

উত্তর:


15

দুঃখিত, আমি ওপেনসিভি জানি না এবং এটি একটি সম্পূর্ণ উত্তরের চেয়ে প্রাক প্রসেসিং পদক্ষেপ:

প্রথমত, আপনি কোনও প্রান্ত সনাক্তকারী চাই না। একটি প্রান্ত সনাক্তকারী রূপান্তরগুলি রূপান্তর করে (এই অন্ধকার থেকে আলোর মতো):

    _____ / ~~~~~

এই জাতীয় উপায়ে (অন্ধকারের উপর উজ্জ্বল রেখাগুলি) মধ্যে:

    ____ / _____

এটি অন্যথায়, একটি পার্থক্য সম্পাদন করে।

তবে আপনার চিত্রগুলিতে এক দিক থেকে এক আলো জ্বলছে, যা আমাদের 3 ডি পৃষ্ঠের স্বস্তি দেখায়। আমরা এটি লাইন এবং প্রান্ত হিসাবে উপলব্ধি করেছি, কারণ আমরা 3 ডি-তে জিনিস দেখতে অভ্যস্ত, কিন্তু সেগুলি সত্যই নয়, এজন্য প্রান্ত সনাক্তকারীরা কাজ করছে না, এবং টেমপ্লেট মিলগুলি ঘোরানো চিত্রগুলির সাথে সহজে কাজ করবে না (একটি নিখুঁত 0 ডিগ্রি ঘোরার সাথে ম্যাচটি আসলে 180 ডিগ্রীতে পুরোপুরি বাতিল হয়ে যায়, কারণ হালকা এবং গা dark় একে অপরের সাথে মিলিত হবে)।

যদি এই মজাদার লাইনের কোনওটির উচ্চতাটি পাশ থেকে দেখায়:

    ____ / _____

তারপরে একদিক থেকে আলোকিত হওয়ার পরে উজ্জ্বলতার ক্রিয়াটি এর মতো দেখতে পাবেন:

    ____ ∧v ____

আপনি আপনার ছবিতে এটি দেখতে পান। মুখের পৃষ্ঠটি আরও উজ্জ্বল হয় এবং পিছনের পৃষ্ঠটি আরও গাer় হয়। সুতরাং আপনি পার্থক্য করতে চান না। আপনাকে করার প্রয়োজন সংহত আলোকসজ্জা দিক বরাবর ইমেজ, এবং এটি আপনার পৃষ্ঠ (প্রায়) মূল উচ্চতা মানচিত্র দিতে হবে। তারপরে হফ ট্রান্সফর্ম বা টেম্পলেট ম্যাচিং বা যাই হোক না কেন, জিনিসগুলির সাথে মিলানো আরও সহজ হবে।

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

আসল, আবর্তিত

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

উচ্চ পাস ফিল্টার

ইন্টিগ্রেশন (ক্রমসংখ্যা) সহজেই পালাতে পারে, যা অনুভূমিক রেখা তৈরি করে। আমি এগুলি অন্য গাউসিয়ান হাই-পাস দিয়ে সরিয়েছি, তবে কেবল এবার অনুভূমিক দিকে:

আউটপুট

এখন স্টোমাটা পুরো জায়গায় সাদা উপবৃত্তাকার, কিছু জায়গায় সাদাের পরিবর্তে অন্য জায়গায় কালো।

মূল:

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

ইন্টিগ্রেটেড:

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

from pylab import *
import Image
from scipy.ndimage import gaussian_filter, gaussian_filter1d

filename = 'rotated_sample.jpg'
I = Image.open(filename).convert('L')
I = asarray(I)

# Remove DC offset
I = I - average(I)

close('all')
figure()
imshow(I)
gray()
show()
title('Original')

# Remove slowly-varying features
sigma_2d = 2
I = I - gaussian_filter(I, sigma_2d)

figure()
imshow(I)
title('2D filtered with %s' % sigma_2d)

# Integrate
summed = cumsum(I, 1)

# Remove slowly-changing streaks in horizontal direction
sigma_1d = 5
output = summed - gaussian_filter1d(summed, sigma_1d, axis=1)

figure()
imshow(output)
title('1D filtered with %s' % sigma_1d)

Hough রুপান্তর , এই, "প্রান্ত পিক্সেল" দিয়ে তৈরি মত শৈলশিরা উপবৃত্ত সনাক্ত করতে যদিও এটি সত্যিই গণনার এবং মেমরি ব্যয়বহুল ব্যবহার করা যেতে পারে, এবং তারা নিখুঁত উপবৃত্ত তাই এটি একটি "পঙ্কিল" আবিষ্কারক একটি বিট হতে হবে না। আমি এটি কখনই করি নি, তবে " হুফ বর্ণবৃত্ত সনাক্তকরণ " এর জন্য গুগলের অনেকগুলি ফলাফল রয়েছে । আমি বলব যদি আপনি একটি নির্দিষ্ট আকারের অনুসন্ধানের জায়গার মধ্যে অন্যটির ভিতরে একটি উপবৃত্ত সনাক্ত করেন তবে এটি স্টোমা হিসাবে গণনা করা উচিত।

আরও দেখুন:


পিএস আমি এখানে যা করেছি তার একটি নাম আছে? এটি কি সাধারণ ফিল্টার প্রকার?
এন্ডোলিথ

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

11

প্রথম জিনিসটি আমি চেষ্টা করব টেমপ্লেট ম্যাচিং, টেমপ্লেটগুলি কিছু ধাপে সমস্ত কোণে ঘোরানো with এখানে টেমপ্লেটটি ঘোরানো প্রয়োজনীয়। এছাড়াও টেমপ্লেটের পছন্দটি অপ্রয়োজনীয় হতে পারে - বিভিন্ন আলো সহ বিভিন্ন হতে পারে এবং আকারগুলিতে পার্থক্য আনতে এটি ঝাপসা হতে পারে।

http://en.wikipedia.org/wiki/Template_matching#Template-based_matching_and_convolution

পরবর্তী - এইচওজি এখানে আশাব্যঞ্জক দেখায়। আরেকটি সমাধান হ'ল মোরাভেক বা শি-টমাসির মতো শক্তিশালী কর্নার ডিটেক্টর ব্যবহার করতে পারে (অ-সর্বাধিক দমন সহ) এবং প্রার্থীদের হিসাবে একই লাইনে 2-কোণ বা 3-4 কোণার গোষ্ঠীগুলির সন্ধান করুন। প্রার্থীদের সন্ধানের পরে আপনি যাচাইয়ের জন্য সক্রিয় কনট্যুর প্রয়োগ করতে পারেন (এটি সত্যিকার অর্থে সহায়তা করবে কিনা তা নিশ্চিত নয় তবে এটি সম্ভবত সম্ভাবনা)

http://en.wikipedia.org/wiki/Corner_detector

http://en.wikipedia.org/wiki/Active_contour

তবুও আরেকটি সম্ভাবনা হ'ল উপবৃত্তির জন্য হফ ট্রান্সফর্ম ব্যবহার করা, সম্ভবত 2 টি নয় তবে 3-4 প্যারামিটার সহ।


7

আংশিক উত্তর। গণিতের সাথে প্রার্থী সন্ধান করা:

p = ColorConvert[Import@"http://i.stack.imgur.com/38Ysw.jpg", 
    "GrayScale"] // ImageAdjust;
m = DeleteSmallComponents[Erosion[Dilation[DeleteSmallComponents[
      Binarize[EntropyFilter[p, 1] // ImageAdjust, .97], 10], 3], 5], 100];
ImageMultiply[Dilation[m, 3], p]

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


আকর্ষণীয় ফলাফল ... সম্ভবত অন্য কোনও স্কিমের সাথে একত্রিত হবে ...
ম্যাট এম

@ ম্যাট ইয়েপ আমি মনে করি যে লক্ষ্যবস্তুহীন পৃষ্ঠের কমপক্ষে ৮০% ফেলে দেওয়া হয়েছে। মুখোশটি কিছুটা বিস্তৃত করার পরে, আপনাকে উপবৃত্তাকারীর সন্ধান করা উচিত you আপনি যে পদ্ধতিটি ব্যবহার করেন না কেন (আমি এখনও কী করতে পারি তা ভাবছি) এটি এখন আরও সহজ is আপনি জানো যে জন্তুরা ঘিরে রয়েছে।
ডঃ বেলিসারিয়াস

1

আমি একটি সংবেদনশীল এজ ডিটেক্টর (উদাহরণস্বরূপ নিম্ন প্রান্তিকের সহিত গ্রেডিয়েন্ট বিশালতা) ব্যবহার করে শুরু করব, এবং তারপরে উপবৃত্তগুলি সন্ধানের জন্য হফ রূপান্তরটি ব্যবহার করব। ক্যানি এখনও কাজ করতে পারে। আমি নিশ্চিত যে আরও প্যারামিটার রয়েছে যাতে আপনি এটি আরও সংবেদনশীল করতে এবং অস্পষ্ট প্রান্তগুলি চয়ন করতে পারেন।

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