मैं अपने मेडिकल डेटा से जमीनी सच्चाई निकालना चाहता हूं। मैं एक ऐसे कार्यक्रम की तलाश में हूं जो इसमें मदद कर सके। मैं जो करना चाहता हूं वह इस प्रकार है। मैं एक विशिष्ट क्षेत्र का चयन करना चाहता हूं और इसे सफेद बनाना चाहता हूं, और मैं चाहता हूं कि यह दूसरे क्षेत्र में काला हो। तो मेरे हाथ में जमीनी सच्चाई होती। चित्रों में उदाहरण हैं। नोट: मेरे पास जमीनी सच्चाई नहीं है, केवल जमीनी सच्चाई के बिना मूल चित्र हैं। मुझे इस क्षेत्र को मूल छवि से खींचने और निकालने की जरूरत है ... यहां चित्र विवरण दर्ज करेंआपकी सहायता के लिए अग्रिम धन्यवाद।

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

1
pascaltx 30 मार्च 2020, 11:04

2 जवाब

आइए आपकी छवि को इसके दो घटक भागों में विभाजित करें, पहले image.png:

enter image description here

और दूसरा, mask.png:

enter image description here

अब आप टर्मिनल में बिना कोई कोड लिखे ImageMagick का उपयोग कर सकते हैं। आपके पास कुछ विकल्प हैं। आप या तो यह कर सकते हैं:

  • परिणाम में मास्क के काले हिस्से को पारदर्शी बनाएं, या
  • परिणाम में मास्क के काले हिस्से को काला कर दें।

आइए पहले उन्हें पारदर्शी बनाते हैं, इसलिए हम छवि में मुखौटा को प्रभावी ढंग से कॉपी कर रहे हैं और इसे अल्फा/पारदर्शिता परत के रूप में मान रहे हैं:

magick image.png mask.png -compose copyalpha -composite result.png

enter image description here

और अब प्रत्येक पिक्सेल स्थान पर मूल छवि और मास्क के गहरे रंग को चुनकर उन्हें काला बनाते हैं - इसलिए darken मिश्रण मोड:

magick image.png mask.png -compose darken -composite result.png

enter image description here

ध्यान दें कि यदि आप पहली तकनीक का उपयोग करते हैं, तो पारदर्शी दिखाई देने वाली मूल जानकारी अभी भी छवि में है और इसे पुनर्प्राप्त किया जा सकता है - इसलिए गोपनीय जानकारी को छिपाने के लिए इस तकनीक का उपयोग न करें।


यदि आप पीआईएल के साथ पायथन से पारदर्शिता पद्धति का उपयोग करना चाहते हैं, तो आप यह कर सकते हैं:

from PIL import Image

# Read image and mask as PIL Images
im = Image.open('image.png').convert('RGB')
ma = Image.open('mask.png').convert('L')

# Merge in mask as alpha channel and save
im.putalpha(ma)
im.save('result.png')

या, OpenCV और Numpy के साथ पारदर्शिता विधि:

import cv2
import numpy as np

# Open image and mask as NMumoy arrays
im = cv2.imread('image.png')
ma = cv2.imread('mask.png', cv2.IMREAD_GRAYSCALE) 

# Merge mask in as alpha channel and save
res = np.dstack((im,ma))
cv2.imwrite('result.png', res)

यदि आप पाइथन और पीआईएल/पिलो के साथ ब्लैकन विधि का उपयोग करना चाहते हैं, तो इसका उपयोग करें:

from PIL import Image, ImageChops

# Read image and mask as PIL Images
im = Image.open('image.png').convert('RGB')
ma = Image.open('mask.png').convert('RGB')

# Choose darker image at each pixel location and save
res = ImageChops.darker(im, ma)
res.save('result.png')

यदि आप OpenCV और Numpy के साथ ब्लैकन विधि का उपयोग करना चाहते हैं, तो ऊपर दिए गए कोड का उपयोग करें लेकिन np.dstack() लाइन को इसके साथ बदलें:

res = np.minimum(im, ma[...,np.newaxis])
3
Mark Setchell 30 मार्च 2020, 12:49
आपके त्वरित उत्तर के लिए बहुत-बहुत धन्यवाद। मेरे पास मुखौटा चित्र नहीं हैं और मेरे पास केवल मूल चित्र हैं। मैं इस तस्वीर में एक क्षेत्र चुनना चाहता हूं और मैं इसे सफेद और बाकी को काला बनाना चाहता हूं। तो मैं एक मुखौटा के बिना एक छवि को मैन्युअल रूप से मुखौटा करना चाहता हूं। मैं जो छवि करना चाहता हूं वह चित्र में दिखाया गया है। यहां छवि विवरण दर्ज करें। वह क्षेत्र जहां मैं लाल रेखाओं का चयन करना चाहता हूं और मैं इसे अंदर से सफेद बनाना चाहता हूं, दूसरा क्षेत्र काला है। पेंट ऐसा कर सकता है लेकिन इसमें कुछ प्रक्रियाएँ लगती हैं और अधिक समय लगता है। अग्रिम में धन्यवाद।
 – 
pascaltx
30 मार्च 2020, 14:24

मैं इस कार्य के लिए ITK - SNAP की अत्यधिक अनुशंसा कर सकता हूं। आप अपनी इनपुट छवियों को कुछ लेबल (अग्रभूमि के लिए 1, आपके उदाहरण में पृष्ठभूमि के लिए 0) के साथ मैन्युअल रूप से लेबल कर सकते हैं और ग्राउंडट्रूथ को बहुत आराम से निर्यात कर सकते हैं।

1
code-lukas 30 मार्च 2020, 17:04