#matlab #image-processing
#matlab #обработка изображений
Вопрос:
Я пытался получить контрастность изображения, используя формулу, но значение контрастности не превышает 255. А также всякий раз, когда я пытался выполнить какую-либо операцию с моей матрицей изображений, значения элементов также не превышали 255. Я попытался преобразовать матрицу изображения в double, но значения элементов изменились и не равны исходным значениям пикселей.
clc;
clear all;
close all;
h = imread('C:UsersLAXMIDHARDesktopMy proj filesabc.jpg');
g = rgb2gray(h);
% f = im2double(g);
[M,N] = size(g);
%
% for i=1:M
% for j=1:N
% f(i,j) = f(i,j).*((i-j).^2);
% end
% end
%
% s = sum(sum(f));
s = 0;
for i = 1:M
for j=1:N
s = s (g(i,j).*((i-j).^2));
end
end
% s is the contrast of image
s
ожидается, что оно будет большим, но не более 255. Это формула контраста:
Комментарии:
1. Откуда взялось это уравнение? Как это приравнивается к контрасту? Для меня это выглядит странно.
2. В любом случае, ваша проблема в том, что
g
естьuint8
, и, следовательноs
uint8
, также есть. MATLAB выполняет сложение целых чисел с насыщением, что означает, что превышение 255 в операции приводит к 255 (а не переполнению, как в других языках). Сначала просто преобразуйте свое изображение в double :g = double(g)
.3. Сэр, в этой формуле i и j — координаты, а g (i, j) — значение пикселя изображения в i-м j-м местоположении. Опять же, согласно вашему предложению, я попытался преобразовать в double, но в том смысле, что значения пикселей полностью отличаются по сравнению с исходным значением серого пикселя.
4. Посмотрите на мое предложение еще раз. Если вы используете
im2double
, значения изменяются, но я предложил вам преобразовать сdouble
помощью, что не изменит значения.5. Спасибо, сэр, за ваше любезное предложение. Не могли бы вы помочь мне с формулой для нахождения среднего контраста изображения?