मैं दो 256x256 छवियों को संयोजित करने और उन्हें imwrite का उपयोग करके सहेजने का प्रयास कर रहा हूं। सहेजी गई छवि को 256x512 माना जाता है, लेकिन जब मैं सहेजी गई छवि को लोड करता हूं, तो आकार 343x434x3 दिखाता है। मैं इसे कैसे हल करूं?

मैं जिस कोड का उपयोग कर रहा हूं वह है:

new_name3 = strcat(f_name_image, '\', kk, '_', num2str(ff), '_pair.png');
pair = [orig_im  noisy_image]; %concatenating two 256x256 images
imagesc(pair)
f = getframe(gca);  
im = frame2im(f);
imwrite(im, new_name3);

Image

1
shaurov2253 29 जुलाई 2020, 20:31

1 उत्तर

सबसे बढ़िया उत्तर

अतिरिक्त विकल्पों को कॉन्फ़िगर किए बिना छवि को फ्रेम से सहेजना हानिपूर्ण हो सकता है। पिक्सेल जानकारी को बनाए रखने के लिए संयोजित छवि को सीधे pair (यहां Image_Pair) सरणी से सहेजें। साथ ही, 343x434x3 में तीसरा आयाम छवि के RGB रंग चैनलों का प्रतिनिधित्व करता है।

%Grabbing the two images%
Image_1 = imread('Image_1.jpeg');
Image_2 = imread('Image_2.jpeg');

%The file name for the concantenated images%
New_File_Name = "Image_3.jpeg";

%Concatenating the images%
Image_Pair = [Image_1 Image_2];

%Displaying the image pair%
imshow(Image_Pair);

%Saving the image to the "New_File_Name"%
imwrite(Image_Pair, New_File_Name);

%Loading the saved image to see if dimensions are consistent%
Saved_Image = imread('Image_3.jpeg');
2
Cris Luengo 29 जुलाई 2020, 22:35
आपके जवाब के लिए धन्यवाद। मैंने वास्तव में 'गेटफ्रेम' का उपयोग किए बिना छवि को सहेजने का प्रयास किया। मुझे उम्मीद के मुताबिक 256x512 छवि मिलती है, लेकिन सहेजी गई छवि मैटलैब आकृति विंडो पर दिखाए गए चित्र के समान नहीं है। मुझे लगता है, बचत करते समय, यह सटीकता खो रहा है, यही वजह है कि सहेजी गई छवि गड़बड़ है। मैंने गेटफ्रेम के लिए अतिरिक्त विकल्प खोजने की कोशिश की ताकि मैं बिना नुकसान के छवि को सहेज सकूं लेकिन इसे नहीं ढूंढ सका। क्या आप कृपया मदद कर सकते हैं?
 – 
shaurov2253
29 जुलाई 2020, 21:10
कोई बात नहीं, इसलिए मुझे लगता है कि आपको फिगर विंडो की भी जरूरत है। मैं उस पर लग जाऊँगा। जब मैंने आश्चर्यजनक रूप से इसका परीक्षण किया तो चित्र विंडो में दिखाई गई छवि और सहेजी गई छवि मेल खाती है। कोई संभावना है कि आप उन छवियों को पोस्ट कर सकते हैं जिनका आप उपयोग कर रहे हैं?
 – 
MichaelTr7
29 जुलाई 2020, 21:14
मैंने पोस्ट में उपयोग की जा रही छवियों में से एक को जोड़ा। तो मेरे द्वारा बताए गए कोड में यह मेरा 'orig_im' है। मैं इसमें कुछ शोर जोड़ता हूं, इसे 'noisy_image' मिलता है। मुझे गहन शिक्षण मॉडल को प्रशिक्षित करने के लिए संयोजित युग्मित छवियों के साथ डेटासेट बनाने की आवश्यकता है। मुझे फिगर विंडो की जरूरत नहीं है, सिर्फ पेयर इमेज की। मुझे लगता है कि आपकी छवियों का मिलान हुआ क्योंकि उनके दोनों पिक्सेल मान uint8 में थे। लेकिन मैं पिक्सेल मानों को डबल में सहेजने की कोशिश कर रहा हूं, जो समस्या का स्रोत हो सकता है। धन्यवाद।
 – 
shaurov2253
29 जुलाई 2020, 21:33
1
@ shaurov2253: छवि डेटा को संशोधित करने और सहेजने के लिए आपको कभी भी प्रदर्शन के माध्यम से नहीं जाना चाहिए। आप वही परिवर्तन लागू कर सकते हैं जो imagesc() करता है: img = img-min(img(:)); img = double(img)*255/max(img(:)); img = uint8(img);
 – 
Cris Luengo
29 जुलाई 2020, 22:33
1
आप JPEG फ़ाइल में दोहरे मान वाले सरणी को सहेज नहीं सकते हैं। JPEG हमेशा 8-बिट अहस्ताक्षरित पूर्णांक होता है। यदि आप फ़्लोटिंग-पॉइंट मानों को सहेजना चाहते हैं, तो आपको टीआईएफएफ जैसे प्रारूप का उपयोग करके सहेजना होगा (लेकिन फ़्लोटिंग-पॉइंट टीआईएफएफ फाइलें व्यापक रूप से समर्थित नहीं हैं) या गैर-छवि फ़ाइल प्रारूप में। लेकिन आपके गहन शिक्षण मॉडल को उच्च-सटीक डेटा की आवश्यकता नहीं है, 8-बिट डेटा पर्याप्त से अधिक है। वे उपकरण आमतौर पर वैसे भी छवि फ़ाइलों से डेटा को सामान्य करते हैं।
 – 
Cris Luengo
29 जुलाई 2020, 23:15