বেসিক এইচএসবি ত্বক সনাক্তকরণ, নিয়ন আলোকসজ্জা


14

আমি আশা করি এটি জিজ্ঞাসা করার জন্য সঠিক জায়গা। অন্যথায় আমার ভুলের জন্য দুঃখিত এবং অনুগ্রহ করে আমাকে আরও ভাল সাইটের পরামর্শ দেয়।

আমি বেশ কয়েকটি এইচএসবি চিত্র ব্যবহার করে একটি সুপার সিম্পল স্কিন ডিটেক্টর বাস্তবায়নের চেষ্টা করছি। আমি এখানে এবং এখানে বর্ণিত পদ্ধতির ব্যবহার করছি ।

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

কেন?

আমি দ্বিতীয় উত্সে বর্ণিত অ্যালগরিদম ব্যবহার করছি :

  1. চিত্র এইচএসভি রঙ স্থান রূপান্তর করুন
  2. 0 <এইচ <38 এর পরিসরে সাদা রাখুন
  3. ফিল্টার ফিল্টার
  4. ফিল্টার ইরোড
  5. অস্পষ্ট ফিল্টার

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

উত্তর:


10

এটি আসলে এইচএসভির চেয়ে আরজিবিতে একটি সাধারণ জেনারেটাল মডেল ব্যবহার করে আরও ভাল কাজ করতে পারে।

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

এনএনপিমিমিমিপিপ্রশ্নঃপ্রশ্নঃসি=প্রশ্নঃ'প্রশ্নঃসি 3 এক্স 3।

সম্পাদনা 2: আপনি যে মানগুলি পেয়েছেন তা খুব বড় বলে মনে হচ্ছে। সর্বাধিক সমবায় পেতে নিম্নলিখিত ম্যাট্রিক্স তৈরি করুন:

255 255 255
 0   0   0

এবং এটি গণনা covariance। আপনার একটি ম্যাট্রিক্স পাওয়া উচিত যেখানে প্রতি মানটি প্রায় 32513। মহালানোবিস দূরত্ব বৈকল্পিক ইউনিটের মধ্যে রয়েছে, সুতরাং এর জন্য সংখ্যাটি কম হওয়া উচিত। ত্বকের শ্রেণিবিন্যাসের জন্য আপনার প্রান্তিকতা সম্ভবত 4 এরও কম হওয়া উচিত।


কোনও চিত্র থেকে ওপেনসিভি দিয়ে 3x3 কোভরিয়েন্স ম্যাট্রিক্স পাবেন কীভাবে বুঝতে আমার সমস্যা আছে .. আপনি আমাকে কিছু উল্লেখ করতে পারেন?
nkint

@ এনকিন্ট, সম্পাদিত উত্তরটি দেখুন।
Dima

ঠিকাছে দারুন. 5 লাইনে আপনি আমাকে বোঝা গেছেন যে covariance কি। ধন্যবাদ। এটা কাজ করে। তবে ফলাফল সংরক্ষণে আমার সমস্যা আছে। যদি আমার ০-২৫৫ পিক্সেল থাকে তবে মহালানোবিসের দূরত্বের জন্য আমার কী ধরণের সংখ্যা আশা করা উচিত? আমি যদি এটিগুলিকে 8-ইউিন্টে রাখি তবে এটি ত্বকের অল্প অল্প অংশই নেয়, যদি আমি এগুলি 32-ফ্লোটে
রাখি তবে

হ্যাঁ আমি মনে করি আমি কিছু ভুল করছি কারণ আমার সোভিয়েত ম্যাট্রিক্স হ'ল: [10913058.00000000, 7046611.50000000, 3290781.50000000; 7046611.50000000, 4811646.00000000, 2225078.00000000; 3290781.50000000, 2225078.00000000, 1387631.87500000]
nkint

1
আপনি কোভারিয়েন্সকে 3D এলে একটি এলিপসয়েড সংজ্ঞায়িত হিসাবে ভাবতে পারেন। আপনি মাতলাব এ এটি কল্পনা করতে সক্ষম হতে পারেন, তবে এটি সম্ভবত অনেক কাজ হবে। বিকল্পভাবে, আপনি উপবৃত্তাকার 2D অনুমানগুলি দেখার চেষ্টা করতে পারেন, তবে এটি কিছু কাজও করতে পারে take
দিমা

4

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

এখানে আরেকটা অ্যালগরিদম ত্বক সনাক্ত করতে আসবে, আলো অবস্থার detecting জন্য আপনি ব্যবহার করতে পারেন এই এক

আরেকটি অ্যালগরিদম, ত্বক সনাক্তকরণ সম্পর্কিত, তবে নিওন আলোর প্রভাবগুলির সাথে খুব বেশি সম্পর্কিত নয়, এটি একটি


2

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

ওপেনসিভি আপনার পাওয়া অন্যান্য অন্যান্য উত্সের চেয়ে এইচএসভিকে আলাদাভাবে উপস্থাপন করে:

  • আপনার জন্য সবচেয়ে বড় পার্থক্য হবে ডাব্লু / আর / টি হিউ: ওপেনসিভি 0 থেকে 179 পর্যন্ত হিউকে উপস্থাপন করে, যখন প্রায় সমস্ত কিছু হ্যান্ডিং বিটের সুবিধা গ্রহণ করে আরও তথ্য সংরক্ষণের জন্য ডাব্লু / ০-২-2৫।
  • অন্যান্য পার্থক্য: পরিপূর্ণতার পরিমাপ আদর্শের সাথে তুলনা করে উল্টে যায়। 255 স্যাচুরেশন অর্থ সাদা রঙের পরিবর্তে ওপেনসিভিতে উজ্জ্বল (বিজ্ঞপ্তি, আমরা 255 এ ফিরে এসেছি - কেবল হিউ 0-180, সম্ভবত 'চাকা' উপস্থাপনার কারণে?)

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


-1
import sys
import numpy
import cv2

cap = cv2.VideoCapture(0)
while(1):
    _, im = cap.read()

    im_ycrcb = cv2.cvtColor(im, cv2.COLOR_BGR2YCR_CB)

    skin_ycrcb_mint = numpy.array((0, 133, 77))
    skin_ycrcb_maxt = numpy.array((255, 173, 127))
    skin_ycrcb = cv2.inRange(im_ycrcb, skin_ycrcb_mint, skin_ycrcb_maxt)

    cv2.imshow("Second Image", skin_ycrcb) # Second image
    contours, _ = cv2.findContours(skin_ycrcb, cv2.RETR_EXTERNAL, 
        cv2.CHAIN_APPROX_SIMPLE)
    for i, c in enumerate(contours):
        area = cv2.contourArea(c)
            if area > 1000:
                cv2.drawContours(im, contours, i, (255, 0, 0), 3)
    cv2.imshow("Final Image", im)         # Final image
    cv2.waitKey(1)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.