المشكلة مع المتوسط تلف الصور للقضاء على الضوضاء في MATLAB

StackOverflow https://stackoverflow.com/questions/2449780

سؤال

أريد أن متوسط بعض .صور jpg التالفة من صفر-يعني جاوس الضوضاء المضافة.بعد البحث حول اكتشفت لإضافة صورة مصفوفات تقسيم المبلغ على عدد من المصفوفات.ومع ذلك ، فإن الناتجة الصورة سوداء تماما.عادة عندما يكون عدد الصور يزيد ثم يترتب على ذلك الصورة يحصل على نحو أفضل.ولكن عند استخدام المزيد من الصور فإنه يحصل على أكثر قتامة.

أنا باستخدام 800x600 الأسود والأبيض .صور jpg.هنا هو السيناريو كنت:

image1 = imread ('PIC1.jpg');
image2 = imread ('PIC2.jpg');
image3 = imread ('PIC3.jpg');
image4 = imread ('PIC4.jpg');

sum = image1 + image2 + image3 + image4; 
av = sum / 4; 
imshow(av);
هل كانت مفيدة؟

المحلول

المشكلة هي أن الصورة جميع البيانات من نوع uint8, لذا مضيفا لهم كل شيء يؤدي إلى تشبع في قيمة 255 عن القيم بكسل, مما يتيح لك في الغالب صورة بيضاء ثم ينتهي يبحث معظمهم من السود عند ثم القسمة على عدد من الصور.يجب تحويل الصور الخاصة بك إلى نوع بيانات آخر ، مثل double, ثم أداء المتوسط, و ثم تحويلها مرة أخرى إلى uint8:

% Load your images:
image1 = imread('PIC1.jpg');
image2 = imread('PIC2.jpg');
image3 = imread('PIC3.jpg');
image4 = imread('PIC4.jpg');

% Convert the images to type double and sum them:
imageSum = double(image1) + double(image2) + double(image3) + double(image4);

% Divide by the number of images and convert back to type uint8:
averageImage = uint8(imageSum./4);

% Display the averaged image:
imshow(averageImage);

ملاحظة جانبية: يجب تجنب إعطاء المتغيرات نفس الأسماء الموجودة أي وظائف, لأن هذا يمكن أن يسبب مشاكل/الارتباك.هذا هو السبب في أنني غيرت متغير sum إلى imageSum (هناك المدمج في وظيفة sum).

نصائح أخرى

حل بديل باستخدام IMLINCOMB من الصورة تجهيز الأدوات:

I = imlincomb(0.25,I1, 0.25,I2, 0.25,I3, 0.25,I4);

يمكنك أيضا استخدام imagesc(averageImage);هذه الوظيفة مع السيارات-حجم الصورة لا تظهر سوداء

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top