एक छवि से सफेद पृष्ठभूमि निकालें और इसे पारदर्शी बनाएं


82

हम गणित में निम्नलिखित करने की कोशिश कर रहे हैं - RMagick छवि से सफेद पृष्ठभूमि को हटा दें और इसे पारदर्शी बनाएं

लेकिन वास्तविक तस्वीरों के साथ यह घटिया लग रहा है (जैसे छवि के चारों ओर एक हल होना)।

हमने यहां अब तक क्या किया है:

unground0[img_] := With[{mask = ChanVeseBinarize[img, TargetColor->{1.,1.,1.}]},
  Rasterize[SetAlphaChannel[img, ImageApply[1-#&, mask]], Background->None]]]

यहाँ एक उदाहरण है कि क्या करता है।

मूल छवि:

मूल छवि

सफ़ेद बैकग्राउंड वाली छवि जिसकी कोई पृष्ठभूमि नहीं है (या, यहाँ प्रदर्शन उद्देश्यों के लिए, एक गुलाबी पृष्ठभूमि):

पारदर्शी पृष्ठभूमि के साथ छवि - वास्तव में यहाँ एक गुलाबी पृष्ठभूमि, प्रभामंडल समस्या को स्पष्ट करने के लिए

उस प्रभामंडल से छुटकारा पाने के लिए कोई विचार? LevelPenalty जैसी चीजों को तोड़कर, मैं केवल छवि को खोने की कीमत पर दूर जाने के लिए प्रभामंडल प्राप्त कर सकता हूं।

संपादित करें: इसलिए मैं बाउंटी के लिए समाधानों की तुलना कर सकता हूं, कृपया अपने समाधान को ऊपर की तरह संरचना दें, अर्थात् एक स्व-निहित फ़ंक्शन जिसका नाम unground- कुछ है जो एक छवि लेता है और पारदर्शी पृष्ठभूमि के साथ एक छवि देता है।


1
अब तक की मदद के लिए बहुत बहुत धन्यवाद, सभी को! स्टैकओवरफ़्लो जैसे ही इस पर आने वाला बड़ा इनाम मुझे एक जोड़ने देता है। और, संस्थापकों द्वारा व्यक्त की गई स्टैकओवरफ्लो की भावना के अनुसार, आपको अपने जवाब को निश्चित करने के लिए एक-दूसरे से चोरी करने के लिए स्वतंत्र महसूस करना चाहिए!
dreeves

3
पहले 500 इनाम और फिर "मैं आप सभी को उदारतापूर्वक एक-दूसरे से उधार लेने के लिए प्रोत्साहित करता हूं कि यदि संभव हो तो उस पर सुधार करें!" - तुम एक कुत्ते से लड़ना चाहते हो ना?
श्री। छिपकली १०'११

@ Mr.Wizard, :) मैं इसे हालांकि नहीं बना रहा हूं, कि संस्थापकों (जेफ और जोएल) ने शुरुआत से कहा है कि यह प्रोत्साहित किया गया है। विचार शीर्ष उत्तर के लिए वास्तव में पूर्ण और निश्चित है। (और जाहिर है कि मेरे पास इस मामले में भी
उल्टी

2
अत्यधिक जिज्ञासु के लिए, यह IKEA का "FREDRIK" कंप्यूटर वर्क स्टेशन है: ikea.com/us/en/catalog/products/60111123
अर्नॉड बुज़िंग

1
@ ड्रीम्स, मैंने tineye.com का उपयोग किया ।
अरनौद बुज़िंग

जवाबों:


45

शायद, किनारे की गुणवत्ता के आधार पर आपको ज़रूरत है:

img = Import@"http://i.stack.imgur.com/k7E1F.png";
mask = ChanVeseBinarize[img, TargetColor -> {1., 1., 1.}, "LengthPenalty" -> 10]
mask1 = Blur[Erosion[ColorNegate[mask], 2], 5]
Rasterize[SetAlphaChannel[img, mask1], Background -> None]

यहां छवि विवरण दर्ज करें

संपादित करें

Stealing a bit from @Szabolcs

img2 = Import@"http://i.stack.imgur.com/k7E1F.png";
(*key point:scale up image to smooth the edges*)
img = ImageResize[img2, 4 ImageDimensions[img2]];
mask = ChanVeseBinarize[img, TargetColor -> {1., 1., 1.}, "LengthPenalty" -> 10];
mask1 = Blur[Erosion[ColorNegate[mask], 8], 10];
f[col_] := Rasterize[SetAlphaChannel[img, mask1], Background -> col, 
                     ImageSize -> ImageDimensions@img2]
GraphicsGrid[{{f@Red, f@Blue, f@Green}}]

यहां छवि विवरण दर्ज करें

बड़ा करने के लिए क्लिक करें

संपादित करें २

बस छवि में प्रभामंडल और पृष्ठभूमि की खामियों की सीमा का अंदाजा लगाने के लिए :

img = Import@"http://i.stack.imgur.com/k7E1F.png";
Join[{img}, MapThread[Binarize, {ColorSeparate[img, "HSB"], {.01, .01, .99}}]]

यहां छवि विवरण दर्ज करें

ColorNegate@ImageAdd[EntropyFilter[img, 1] // ImageAdjust, ColorNegate@img]

यहां छवि विवरण दर्ज करें


अफसोस की बात है, मेरी मशीन पर आपका कोड परिणाम के सभी समान गुणवत्ता पर उत्पादन नहीं करता है। क्या सवाल में पोस्ट की गई 500x500 की छवि img थी? यदि हाँ, तो शायद एक मैक / विंडोज़ चीज ...
Matthias Odisio

@ मैथियास हां, आईएमजी मूल से एक कॉपी / पेस्ट है। खिड़कियों पर मम्मा 8.01।
डॉ। बेलीज़ेरिक

ओह ... शायद आशावादी छोटे अंकगणितीय शोर के कारण एक अलग परिणाम उत्पन्न करता है। वैसे भी, मुझे खुशी है कि आप मापदंडों के इस सेट का उपयोग करके आपके लिए अच्छा काम कर रहे हैं।
मथायस ओडिसियो

ऐसा नहीं लगता कि यह काम करता है। यह सिर्फ किनारों को धुंधला कर रहा है।
user541686

48

यह समारोह मार्क रैनसम द्वारा वर्णित अतिरिक्त मिश्रण को लागू करता है, एक अतिरिक्त छोटे लेकिन दृश्यमान सुधार के लिए:

reverseBlend[img_Image, alpha_Image, bgcolor_] :=
 With[
  {c = ImageData[img], 
   a = ImageData[alpha] + 0.0001, (* this is to minimize ComplexInfinitys and considerably improve performance *)
   bc = bgcolor},

  ImageClip@
   Image[Quiet[(c - bc (1 - a))/a, {Power::infy, 
       Infinity::indet}] /. {ComplexInfinity -> 0, Indeterminate -> 0}]
  ]

यह पृष्ठभूमि हटाने का कार्य है। thresholdपैरामीटर छवि की प्रारंभिक binarization के लिए प्रयोग किया जाता है,minSizeCorrection छोटे कबाड़ घटकों के आकार की सीमा में सुधार करने binarization के बाद हटा दिया जाना चाहिए के लिए है।

removeWhiteBackground[img_, threshold_: 0.05, minSizeCorrection_: 1] :=
  Module[
  {dim, bigmask, mask, edgemask, alpha},
  dim = ImageDimensions[img];
  bigmask = 
   DeleteSmallComponents[
    ColorNegate@
     MorphologicalBinarize[ColorNegate@ImageResize[img, 4 dim], threshold], 
    Round[minSizeCorrection Times @@ dim/5]];
  mask = ColorNegate@
    ImageResize[ColorConvert[bigmask, "GrayScale"], dim];
  edgemask = 
   ImageResize[
    ImageAdjust@DistanceTransform@Dilation[EdgeDetect[bigmask, 2], 6],
     dim];
  alpha = 
   ImageAdd[
    ImageSubtract[
     ImageMultiply[ColorNegate@ColorConvert[img, "GrayScale"], 
      edgemask], ImageMultiply[mask, edgemask]], mask];
  SetAlphaChannel[reverseBlend[img, alpha, 1], alpha]
  ]

फ़ंक्शन का परीक्षण:

img = Import["http://i.stack.imgur.com/k7E1F.png"];

background = 
  ImageCrop[
   Import["http://cdn.zmescience.com/wp-content/uploads/2011/06/\
forest2.jpg"], ImageDimensions[img]];

result = removeWhiteBackground[img]

ImageCompose[background, result]
Rasterize[result, Background -> Red]
Rasterize[result, Background -> Black]

नमूना

यह कैसे काम करता है इसका संक्षिप्त विवरण:

  1. अपनी पसंदीदा बायनेरिज़ोन विधि चुनें जो अपेक्षाकृत सटीक तेज किनारों का उत्पादन करती है

  2. इसे अप-स्केल की गई छवि पर लागू करें, फिर प्राप्त डाउनस्केल करें mask मूल आकार । इससे हमें एंटीलियासिस होता है। ज्यादातर काम पूरा हो चुका है।

  3. एक छोटे से सुधार के लिए, पृष्ठभूमि को छवि को अल्फा के रूप में इसके नकारात्मक की चमक का उपयोग करके मिश्रण करें, फिर किनारों पर चारों ओर एक पतली क्षेत्र में मूल छवि पर प्राप्त छवि को मिलाएं ( edgemask) किनारों पर सफेद पिक्सेल की दृश्यता को कम करने के लिए। इन ऑपरेशनों के अनुरूप अल्फा चैनल की गणना की जाती है (कुछ हद तक गूढ़ ImageMultiply/Addअभिव्यक्ति)।

  4. अब हमारे पास अल्फा चैनल का एक अनुमान है, ताकि हम एक रिवर्स मिश्रण कर सकें।

चरण 3 और 4 में इतना सुधार नहीं होता है, लेकिन अंतर दिखाई देता है।


@ सबिसरियस यह अंग्रेजी के बारे में नहीं है, मुझे पता है कि मेरा नाम अधिकांश के लिए बहुत ही असामान्य लग रहा है :-)
Szabolcs

देखने में काफी सुंदर एसटीडी जैसा लगता है। मेरे लिए हंगेरियन उपनाम :)
डॉ। बेलीज़ेरियस

@ काबिलिसोरियस वास्तव में यह एक नाम है, या अधिक सटीक रूप से एक दिया गया नाम है, जैसा कि हंगेरियन में उपनाम पहले आता है और दिया गया नाम अंतिम है।
स्ज़बोल्क्स

2
मामले की छाया अभी भी नीचे 2 में एक भूरे रंग के बैंड के रूप में है ...
मोजर सी। डी। वीस

@ SjoerdC.deVries यह सच है, लेकिन मुझे लगता है कि इस कार्य के लिए यह इस तरह से होना चाहिए ... यह बताने का कोई तरीका नहीं है कि यह एक छाया है और वस्तु का हिस्सा नहीं है। अमेज़ॅन पर अधिकांश चित्र या तो छाया थे या उबाऊ रूप से तुच्छ थे, इसलिए मैं इस के साथ गया।
शाबोलक्स

22

मैं विशेष रूप से गणितज्ञ के संदर्भ में उदारतापूर्वक बोलने जा रहा हूं। मुझे नहीं पता कि ये ऑपरेशन कठिन हैं या तुच्छ हैं।

पहला कदम छवि के किनारे पिक्सेल के लिए एक अल्फा (पारदर्शिता) स्तर का अनुमान लगाना है। अभी आप एक सख्त सीमा का उपयोग कर रहे हैं, इसलिए अल्फा या तो 0% पूरी तरह से पारदर्शी है या 100% पूरी तरह से अपारदर्शी है। आपको पृष्ठभूमि और रंगों के कुल सफेद के बीच एक सीमा को परिभाषित करना चाहिए जो निर्विवाद रूप से छवि का हिस्सा हैं, और एक उचित अनुपात सेट करें - यदि यह पृष्ठभूमि के रंग के करीब है तो यह कम अल्फा है, और यदि यह गहरे कटऑफ के करीब है तो यह है एक उच्च अल्फा। उसके बाद आप आसपास के अल्फा मानों के आधार पर समायोजन कर सकते हैं - जितना अधिक पिक्सेल पारदर्शिता से घिरा होता है, उतना ही पारदर्शी होने की संभावना है।

एक बार जब आपके पास अल्फा मान होते हैं, तो आपको उचित रंग प्राप्त करने के लिए रिवर्स मिश्रण करने की आवश्यकता होती है। जब किसी छवि को एक पृष्ठभूमि पर प्रदर्शित किया जाता है, तो इसे उस अल्फा वैल्यू के अनुसार मिश्रित किया जाता है, c = bc*(1-a)+fc*aजहां bcपृष्ठभूमि का रंग है और fcअग्रभूमि रंग है। आपके मामले में पृष्ठभूमि सफेद है (255,255,255) और अग्रभूमि रंग, अज्ञात है तो हम सूत्र रिवर्स: fc = (c - bc*(1-a))/a। जब a=0सूत्र शून्य से विभाजित करने के लिए कहता है, लेकिन रंग वैसे भी मायने नहीं रखता है, इसलिए केवल काले या सफेद का उपयोग करें।


3
बहुत बढ़िया जवाब। अल्फा का अनुमान वास्तव में संपूर्ण शोध क्षेत्र है, जैसे ai.stanford.edu/~ruzon/alpha
mpenkov

2
सहमत, महान जवाब; धन्यवाद मार्क! इनाम के लिए (जब स्टैकओवरफ्लो मुझे जोड़ने की अनुमति देता है) हालांकि मैं पूरी तरह से कार्यान्वित समाधान के साथ जाने की योजना सबसे अच्छा लग रहा है। अब तक का बेलिसियस, मैं सोच रहा हूं।
dreeves

11

यहाँ पर मार्क रैनसम के दृष्टिकोण को लागू करने की कोशिश की गई है, जिसमें बेलिसरिज़ की मुखौटा पीढ़ी से कुछ मदद ली गई है:

वस्तु की सीमा का पता लगाएँ:

img1 = SetAlphaChannel[img, 1];
erosionamount=2;
mb = ColorNegate@ChanVeseBinarize[img, TargetColor -> {1., 1., 1}, 
      "LengthPenalty" -> 10];
edge = ImageSubtract[Dilation[mb, 2], Erosion[mb, erosionamount]];

ImageApply[{1, 0, 0} &, img, Masking ->edge]

आंकड़ा बढ़त

अल्फा मान सेट करें:

edgealpha = ImageMultiply[ImageFilter[(1 - Mean[Flatten[#]]^5) &, 
   ColorConvert[img, "GrayScale"], 2, Masking -> edge], edge];
imagealpha = ImageAdd[edgealpha, Erosion[mb, erosionamount]];
img2 = SetAlphaChannel[img, imagealpha];

उल्टा रंग मिश्रण:

img3 = ImageApply[Module[{c, \[Alpha], bc, fc},
   bc = {1, 1, 1};
   c = {#[[1]], #[[2]], #[[3]]};
   \[Alpha] = #[[4]];
   If[\[Alpha] > 0, Flatten[{(c - bc (1 - \[Alpha]))/\[Alpha], \[Alpha]}], {0., 0., 
   0., 0}]] &, img2];

Show[img3, Background -> Pink]

गुलाबी पृष्ठभूमि

ध्यान दें कि किनारों में से कुछ में सफेद फ़ज़ कैसे हैं? पहली छवि में लाल रूपरेखा के साथ तुलना करें। हमें बेहतर एज डिटेक्टर की जरूरत है। कटाव की मात्रा बढ़ने से फ़ज़ के साथ मदद मिलती है, लेकिन फिर अन्य पक्ष बहुत पारदर्शी हो जाते हैं, इसलिए किनारे के मुखौटे की चौड़ाई पर एक व्यापार है। यह बहुत अच्छा है, हालांकि, यह देखते हुए कि कोई धब्बा संचालन नहीं है, प्रति से।

यह अपनी मजबूती का परीक्षण करने के लिए विभिन्न प्रकार की छवियों पर एल्गोरिदम को चलाने के लिए शिक्षाप्रद होगा, यह देखने के लिए कि यह कितना स्वचालित है।


हम्म, मुझे img2 img3 की तुलना में बेहतर (तालिका की सतह के नीचे देखें) दिखता है। हो सकता है कि उल्टे रंग का मिश्रण अनावश्यक हो?
JxB

10

बस एक शुरुआत के रूप में चारों ओर खेल रहा है - यह आश्चर्यजनक है कि कितने उपकरण उपलब्ध हैं।

b = ColorNegate[
    GaussianFilter[MorphologicalBinarize[i, {0.96, 0.999}], 6]];
c = SetAlphaChannel[i, b];
Show[Graphics[Rectangle[], Background -> Orange, 
     PlotRangePadding -> None], c]


9

मैं छवि प्रसंस्करण के लिए पूरी तरह से नया हूं, लेकिन यहां मुझे संस्करण 8 के नए रूपात्मक छवि प्रसंस्करण कार्यों के साथ खेलने के बाद कुछ मिलता है:

mask = DeleteSmallComponents[
   ColorNegate@
    Image[MorphologicalComponents[ColorNegate@img, .062, 
      Method -> "Convex"], "Bit"], 10000];
Show[Graphics[Rectangle[], Background -> Red, 
  PlotRangePadding -> None], SetAlphaChannel[img, ColorNegate@mask]]

छवि


3
मुझे लगता है कि बौने किनारों पर उन दांतेदार लाइनों से छुटकारा पाने की कोशिश कर रहे हैं।
डॉ। बिसरिसेर

1
सच है, यह उस प्रभामंडल को कम करने का एक अच्छा काम करता है लेकिन दांतेदारी एक सौदा ब्रेकर हो सकता है। @belisarius, आपका संस्करण बहुत अद्भुत लग रहा है!
dreeves

@ मुझे लगता है कि किनारों को धुंधला होने के बाद एक दूरी परिवर्तन का उपयोग करके (मेरे संस्करण में) सुधार किया जा सकता है, लेकिन यह श्री विज़ द्वारा पहले से ही नोट किया गया था, इसलिए मैंने उनके लिए प्रयोग छोड़ दिया।
डॉ। बेलिसियस

क्या करता Method -> "Convex"है? यह प्रलेखित नहीं है।
स्ज़बोल्क्स

मुझे माफ कर दो! मुझे एहसास है कि मैं MorphologicalCompords और MorphologicalBinarize को भ्रमित करता हूं जो वास्तव में असंबंधित कार्य हैं!
शैबॉलेक्स

6

मैं इसके लिए फ़ोटोशॉप का उपयोग करने और पीएनजी के रूप में बचत करने की सलाह देता हूं।


5
अच्छी बात है, लेकिन क्या एल्गोरिथ्म है कि Photoshop यह अच्छी तरह से करने के लिए उपयोग करता है? (और बेशक हम इस स्वचालित करना चाहते हैं, जादू प्रत्येक छवि के लिए में फ़ोटोशॉप की छड़ी के साथ क्लिक करें चारों ओर नहीं।)
dreeves

3
वैसे, मुझे लगता है कि यह इंगित करने के लिए एक उपयोगी चीज है (मैं आसानी से एक बड़ा गणितज्ञ हो सकता था जो कि फोटोशॉप मुझे नहीं हुआ होगा!)। और यह पता चला है कि यह भी Photoshop में पटकथा है तो यह भी सबसे अच्छा संभव जवाब हो सकता है कि, अगर Photoshop वास्तव में कुछ चालाक है कि एक छोटे से गणित कार्यक्रम के साथ दोहराया नहीं जा सकता है।
dreeves

5
वहाँ एक कारण है कि Adobe अपने सॉफ्टवेयर के लिए 500 smakeroos चार्ज कर सकते हैं ;-)।
तिमो

7
शायद आप किसी फ़ोटोशॉप स्क्रिप्ट द्वारा बनाई गई छवि का कोई संस्करण पोस्ट कर सकते हैं (संदर्भ के लिए कोई मैन्युअल हस्तक्षेप नहीं :-) - हमें पता होगा कि हमें क्या हराना है ...
cormullion

5

संभव कदम आप ले सकते हैं:

  • मुखौटा पतला करें
  • इसे धुंधला कर दें
  • मास्क का उपयोग करके, सफेद से दूरी द्वारा पारदर्शिता निर्धारित करें
  • मास्क का उपयोग करके, संतृप्ति को समायोजित करें जैसे कि पहले से अधिक सफेद रंग अधिक संतृप्त हैं।

अच्छी सोच; धन्यवाद! इसके लिए कुछ सामान्य-उद्देश्य कोड प्राप्त करना पसंद करेंगे। हम शायद एक दो दिनों में एक बड़ा इनाम डाल देंगे (जब स्टैकओवरफ्लो हमें देता है) यदि आप वापस आना चाहते हैं। वास्तव में, मैं ऐसा करने के लिए प्रतिबद्ध हूं, अगर इसमें गोता लगाने का कोई
मोह है

@ ड्रीम्स मुझे अच्छा लगता है; मेरे पास अभी समय नहीं है, लेकिन मैं इसे वापस लाने की कोशिश करूंगा।
श्री। छिपकली izard

3

बस किसी भी पिक्सेल को बदल दें जो कि "लगभग सफ़ेद के करीब" समान RGB रंग के पिक्सेल और पारदर्शिता चैनल पर एक सिग्मॉइड ग्रेडिएंट है। आप ठोस से पारदर्शी तक रैखिक संक्रमण को लागू कर सकते हैं, लेकिन साइनसॉइड या सिगमॉइड या तनह अधिक प्राकृतिक दिखते हैं, आप जिस धार की तलाश कर रहे हैं, उसके आधार पर वे तेजी से मध्यम से दूर या तो ठोस या पारदर्शी होते हैं, लेकिन स्टेपवाइज या बाइनरी में नहीं ढंग, जो अभी तुम्हारे पास है।

इस पर इस तरीके से विचार करें:

मान लें कि आर, जी, बी प्रत्येक 0.0-1.0 हैं, तो आइए एक संख्या के रूप में सफेद को आर + जी + बी = 1.0 * 1 = 3.0 के रूप में दर्शाते हैं।

प्रत्येक रंग को थोड़ा बाहर निकालने से यह थोड़ा "ऑफ-व्हाइट" हो जाता है, लेकिन सभी 3 में से थोड़ा सा लेना किसी भी एक से थोड़ा अधिक दूर ले जा रहा है। मान लें कि आप किसी एक चैनल पर 10% की कटौती की अनुमति देते हैं: 1.0 * .10 = .1, अब इस नुकसान को तीनों में फैलाएं और इसे अल्फा चैनल के लिए 0 और 1 के बीच बाँध दें, यदि यह .1 से कम है, तो ऐसा है ( हानि = 0.9) => 0 और (हानि = 1.0) => 1:

threshold=.10;
maxLoss=1.0*threshold;
loss=3.0-(R+G+B);
alpha=If[loss>maxLoss,0,loss/maxLoss];
(* linear scaling is used above *)
(* or use 1/(1 + Exp[-10(loss - 0.5maxLoss)/maxLoss]) to set sigmoid alpha *)
(* Log decay: Log[maxLoss]/Log[loss]
      (for loss and maxLoss <1, when using RGB 0-255, divide by 255 to use this one *)

setNewPixel[R,G,B,alpha];

सन्दर्भ के लिए:

maxLoss = .1;
Plot[{ 1/(1 + Exp[-10(loss - 0.5maxLoss)/maxLoss]),
       Log[maxLoss]/Log[loss],
       loss/maxLoss
     }, {loss, 0, maxLoss}]

इसमें एकमात्र खतरा (या लाभ?) यह है कि यह उन गोरों की परवाह नहीं करता है जो वास्तव में फोटो का हिस्सा हैं। यह सभी गोरों को दूर करता है। ताकि अगर आपके पास सफ़ेद कार की तस्वीर हो, तो इसमें पारदर्शी पैच होने की संभावना है। लेकिन आपके उदाहरण से, यह एक वांछित प्रभाव प्रतीत होता है।


मुझे लगता है कि ChanVeseBinarize का विचार उस बारे में होशियार होना है और सफेद पिक्सल को पारदर्शी नहीं बनाना है जब तक कि वे सफेद रंग के बड़े क्षेत्र का हिस्सा नहीं होते हैं, अर्थात, पृष्ठभूमि का हिस्सा होने की बहुत संभावना है।
dreeves

"बड़े क्षेत्र" के साथ समस्या यह है कि महत्वपूर्ण हो सकता है, जबकि छोटा क्षेत्र महत्वहीन हो सकता है। एक सफेद कार पर, पूरे पक्ष महत्वपूर्ण होगा, लेकिन सफेद के एक बड़े पैच के रूप में टैग किया जाएगा। एक सफेद पृष्ठभूमि के खिलाफ दो लोगों के बीच का स्थान छोटा और जटिल किनारों के साथ होगा, लेकिन इसे जाने की आवश्यकता है। आपके पास एक बोल्ट्जमैन मशीन-शैली एआई को आम आकृतियों को पहचानना होगा और देखना होगा कि सफेद जगह या वस्तु का हिस्सा है, लेकिन हम अभी तक वहां नहीं हैं।
ग्रेगरी क्लोपर

1
आप थोड़ा अलग दृष्टिकोण से 2 चित्र भी ले सकते हैं, और फिर स्टीरियो इमेजिंग से आयामीता कटौती का उपयोग यह पता लगाने के लिए कर सकते हैं कि कौन से पिक्सेल पृष्ठभूमि पर आधारित हैं जहां पर निष्कर्ष आते हैं।
ग्रेगरी क्लोपर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.