Имам програма, която връща grayscale
изображение. Но когато се опитам да напиша изображението, то изглежда напълно black
. Защо така? Как мога да напиша изображението и да получа очаквания резултат?
Благодаря.
Имам програма, която връща grayscale
изображение. Но когато се опитам да напиша изображението, то изглежда напълно black
. Защо така? Как мога да напиша изображението и да получа очаквания резултат?
Благодаря.
Първо проверете типа на вашите данни. Можете да преобразувате типа на данните чрез например double() или uint16() и т.н. (Проверете помощта за преобразуване на типове). Ето пример как премащабирате вашите стойности до диапазона на интензитета на uint16, цели числа без знак с ~65k възможни различни стойности. Кастингът разбира се води до по-малка точност на стойностите на интензитета.
new_img(:,:) = uint16((new_img(:,:)./max(max(new_img(:,:),[],1)))*65536);
След това трябва да можете да запишете данните във вашия файл.
Уверете се, че вашето изображение в сиви нюанси е от правилния клас. Освен това проверете стойностите в генерираното изображение. Ако просто са твърде ниски, всички ще изглеждат черни. Ако можете да предоставите по-конкретна информация, може да е възможно да дадете по-подробен отговор.
ако работите върху двоично изображение (преди да бъде преобразувано в сиво) и се каните да го конвертирате в сива скала, тогава внезапно променяте обхвата на пикселите от [0, 1] на [0, 255]. така че стойността '1' в двоичното изображение е напълно бяло, но в сивото изображение е почти черно.
Опитайте тази:
img = imread('image_name.jpg');
imshow(img*50)
това ви прави сигурни, че вашето изображение е черно или просто неговите пикселни стойности не са подходящи.