2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Гистограмма изображения на Maltab
Сообщение11.11.2007, 11:44 
Аватара пользователя
Пытаюсь построить гистограмму изображения в Матлабе. Из книги Гонсалеса набрал текст программы. Но ничего не работает. В чем возможна проблема??
[code]

>> a=imread('qqq.bmp');
>> ih=imhist(a);
[/code]
Ругается на [code]

??? Function IMHIST expected its first input, I or X, to be two-dimensional.

Error in ==> imhist>parse_inputs at 216
iptcheckinput(a, {'double','uint8','logical','uint16','int16','single'}, ...

Error in ==> imhist at 57
[a, n, isScaled, top, map] = parse_inputs(varargin{:});

[/code]

 
 
 
 Re: Гистограмма изображения на Maltab
Сообщение11.11.2007, 15:48 
Аватара пользователя
как построить гистограмму серого изображения я понял, а вот как посторить гистограмму цветного изображения не получается. Подскажите плиз.

 
 
 
 
Сообщение11.11.2007, 17:09 
antoshka1303 писал(а):
как построить гистограмму серого изображения я понял, а вот как посторить гистограмму цветного изображения не получается. Подскажите плиз.

гистограмму можно построить только для изображения с уровнями серого

для цветного изображения можешь сделать отдельно гистограмму для каждого из каналов RGB

 
 
 
 
Сообщение12.11.2007, 13:58 
Аватара пользователя
Invisible писал(а):
antoshka1303 писал(а):
как построить гистограмму серого изображения я понял, а вот как посторить гистограмму цветного изображения не получается. Подскажите плиз.

гистограмму можно построить только для изображения с уровнями серого

для цветного изображения можешь сделать отдельно гистограмму для каждого из каналов RGB
сейчас попробую

 
 
 
 манипуляция с гистограммой в матлабе
Сообщение12.11.2007, 22:28 
Аватара пользователя
Постороил гистограмму изображения. Как получить доступ к элементам гистограммы, чтобы можно было подвинуть, умножить на число или произвести некоторые действия с гистограммой изображения?
Всем заранее спасибо за ответы!

 
 
 
 
Сообщение13.11.2007, 09:17 
antoshka1303 Изменяй само изображение, а не гистограмму
так как гистограмма это только инструмент для оценки распределения уровней серого или какого то из каналов цветного изображения

Прибавляя к картинке значение, ты сдвигаешь гистограмму в право тоесть делаешь картинку светлее

Есть еще способ линейного растягивания, эквализации гистограммы и другие..

 
 
 
 
Сообщение14.11.2007, 13:22 
Аватара пользователя
[quote="Invisible"][b]antoshka1303[/b] Изменяй само изображение, а не гистограмму
так как гистограмма это только инструмент для оценки распределения уровней серого или какого то из каналов цветного изображения

Прибавляя к картинке значение, ты сдвигаешь гистограмму в право тоесть делаешь картинку светлее

Есть еще способ линейного растягивания, эквализации гистограммы и другие..[/quote]
я знаю про способы лин. растяжения,эквализации и др. Проблема в том, что меня хотят, чтобы я все это написал,не пользуюсь втроенными функциями матлаба, а ручками...а хорошего мануала по матлабу нема, разьме только хелп.Вот и сижу разбираюсь...

 
 
 
 
Сообщение16.11.2007, 09:38 
antoshka1303 что тебе именно надо написать ?
Эквализацию гистограммы, линейное растяжение ...
уточни задание

 
 
 
 
Сообщение16.11.2007, 12:45 
Аватара пользователя
Invisible писал(а):
antoshka1303 что тебе именно надо написать ?
Эквализацию гистограммы, линейное растяжение ...
уточни задание

линейное растяжение.
я задал интервал,который нужно растянуть.И построил линейную функцию G(i)=a+b*H(i),
где H-гистограмма изображения.Теперь хотел построить новую гистограмму по вышеописанной формуле.
Код:
for i=1:1:256
    G(i)=a+b*H(i);
end
imshow(G);
imhist(G);
но строиться почему-то только 1палочка в гистограмме...что я не так делаю?

 
 
 
 
Сообщение16.11.2007, 15:48 
antoshka1303 писал(а):
for i=1:1:256

1, зачем ты указываешь что шаг 1 имхо это лишнее он итак будет один
пиши просто for i=1:256

2, ты делаешь цикл от 1 до 256
256 это количество уровней серого
ты должен делать цикл по размерности твоей картинки
например если у тебя картинка размером 8х8
то тебе надо делать цикл for i=1:64
так как ты присваиваешь новый уровень сероого, новому значению пиксела

3, по поводу G(i)=a+b*H(i);
Оставь гистограмму в покое, она тебе только для вывода данных служит инструментом, изменять ее бессмысленно в данной задаче
гистограмма это обычный массив, который показывает количество пикселей для определенного уровня серого

4, Если ты просто делаешь линейное растяжение
то тебе не надо строить цикл и мучать гистограмму
если допустим G это изображение G=imread('image.bmp');

То когда ты пишешь G_new=G*b+a;
когда ты прибавляешь/умножаешь число к картинке, это число прибавляется/умножается ко всем пикселам картинки

 
 
 
 
Сообщение03.12.2007, 22:26 
Аватара пользователя
Invisible писал(а):
antoshka1303 писал(а):
for i=1:1:256

1, зачем ты указываешь что шаг 1 имхо это лишнее он итак будет один
пиши просто for i=1:256

2, ты делаешь цикл от 1 до 256
256 это количество уровней серого
ты должен делать цикл по размерности твоей картинки
например если у тебя картинка размером 8х8
то тебе надо делать цикл for i=1:64
так как ты присваиваешь новый уровень сероого, новому значению пиксела

3, по поводу G(i)=a+b*H(i);
Оставь гистограмму в покое, она тебе только для вывода данных служит инструментом, изменять ее бессмысленно в данной задаче
гистограмма это обычный массив, который показывает количество пикселей для определенного уровня серого

4, Если ты просто делаешь линейное растяжение
то тебе не надо строить цикл и мучать гистограмму
если допустим G это изображение G=imread('image.bmp');

То когда ты пишешь G_new=G*b+a;
когда ты прибавляешь/умножаешь число к картинке, это число прибавляется/умножается ко всем пикселам картинки

ничего не понял.%(

 
 
 
 
Сообщение04.12.2007, 09:26 
antoshka1303 писал(а):
ничего не понял.%(

что конкретно не понял?

 
 
 [ Сообщений: 12 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group