पहला कदम सफेद संतुलन के मुद्दों को ध्यान में रखते हुए छवि में रोशनी अंतर को बराबर करना है। यहां सिद्धांत यह है कि सीमित क्षेत्र के भीतर छवि का सबसे चमकीला हिस्सा सफेद प्रतिनिधित्व करता है। पहले से छवि को धुंधला करके हम छवि में शोर के प्रभाव को खत्म कर देते हैं।
from PIL import Image
from PIL import ImageFilter
im = Image.open(r'c:\temp\temp.png')
white = im.filter(ImageFilter.BLUR).filter(ImageFilter.MaxFilter(15))
अगले कदम आरजीबी इनपुट से एक ग्रे पैमाने पर छवि बनाने के लिए है। सफेद बिंदु पर स्केल करके हम सफेद संतुलन के मुद्दों के लिए सही हैं। इस तरह के ग्रिड की ब्लू लाइन के रूप में आर, जी, बी हम किसी भी रंग है कि एक शुद्ध ग्रे नहीं है de-जोर देना की अधिकतम लेने से। सही आकार और प्रारूप की एक छवि बनाने के लिए यहां प्रस्तुत कोड की पहली पंक्ति एक डमी है।
grey = im.convert('L')
width,height = im.size
impix = im.load()
whitepix = white.load()
greypix = grey.load()
for y in range(height):
for x in range(width):
greypix[x,y] = min(255, max(255 * impix[x,y][0]/whitepix[x,y][0], 255 * impix[x,y][2]/whitepix[x,y][3], 255 * impix[x,y][4]/whitepix[x,y][5]))
इन आपरेशनों का परिणाम एक छवि ज्यादातर संगत मान होते हैं और एक साधारण सीमा के माध्यम से काले और सफेद करने के लिए परिवर्तित किया जा सकता है।
संपादित करें: यह थोड़ा प्रतियोगिता को देखने के लिए अच्छा है। nikie ने सफेद स्तर में भिन्नताओं को हटाने के लिए स्केलिंग के बजाय घटाव का उपयोग करके एक बहुत ही समान दृष्टिकोण का प्रस्ताव दिया है।मेरी विधि खराब प्रकाश व्यवस्था वाले क्षेत्रों में इसके विपरीत को बढ़ाती है, और निकी की विधि नहीं है - आप जिस विधि को पसंद करते हैं वह इस बात पर निर्भर करेगी कि खराब रोशनी वाले क्षेत्रों में जानकारी है या नहीं, जिन्हें आप बनाए रखना चाहते हैं।
इस दृष्टिकोण से बनाना मेरे प्रयास इस के परिणामस्वरूप:
for y in range(height):
for x in range(width):
greypix[x,y] = min(255, max(255 + impix[x,y][0] - whitepix[x,y][0], 255 + impix[x,y][7] - whitepix[x,y][8], 255 + impix[x,y][9] - whitepix[x,y][10]))
मैं एक और भी बेहतर परिणाम देने के लिए तकनीक के संयोजन पर काम कर रहा हूँ, लेकिन यह अभी भी तैयार नहीं है।
कैसे रंग के बारे में? मैं छवि प्रसंस्करण से परिचित नहीं हूं, लेकिन ऐसा लगता है जैसे आप नीले रंग के एक निश्चित अंतर के भीतर सब कुछ हटाते हैं, तो ग्रिड हटा दिया जाएगा। – Mehrdad