के साथ प्रदर्शन के लिए 16-बिट छवि डेटा को कुशलतापूर्वक परिवर्तित करने के लिए numpy का उपयोग करके, मैं अक्सर 16-बिट ग्रेस्केल छवि डेटा को प्रदर्शित करने के लिए 8-बिट छवि डेटा में परिवर्तित करता हूं। छवि के 'दिलचस्प' हिस्सों को हाइलाइट करने के लिए न्यूनतम और अधिकतम प्रदर्शन तीव्रता समायोजित करने के लिए लगभग हमेशा उपयोगी होता है।तीव्रता स्केलिंग
नीचे दिया गया कोड लगभग वही है जो मैं चाहता हूं, लेकिन यह बदसूरत और अक्षम है, और छवि डेटा की कई मध्यवर्ती प्रतियां बनाता है। मैं न्यूनतम मेमोरी पदचिह्न और प्रसंस्करण समय के साथ एक ही परिणाम कैसे प्राप्त कर सकता हूं?
import numpy
image_data = numpy.random.randint(#Realistic images would be much larger
low=100, high=14000, size=(1, 5, 5)).astype(numpy.uint16)
display_min = 1000
display_max = 10000.0
print(image_data)
threshold_image = ((image_data.astype(float) - display_min) *
(image_data > display_min))
print(threshold_image)
scaled_image = (threshold_image * (255./(display_max - display_min)))
scaled_image[scaled_image > 255] = 255
print(scaled_image)
display_this_image = scaled_image.astype(numpy.uint8)
print(display_this_image)
बहुत अच्छा! यह ऐसी चीज है जो मैं अपने साथ नहीं आती थी। – Andrew
सुंदर और सुरुचिपूर्ण समाधान! – RockJake28