У меня есть программа, которая возвращает изображение 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)
это гарантирует, что ваше изображение черное или просто его значения пикселей не подходят.