FAQ | Points | Add... | Recent posts | Search | Register | Log in


[MATLAB] PSNR obrazków - jak wczytac kod


Post new topic  Reply to topic      Main Page -> Forum Index -> Programming Generally -> [MATLAB] PSNR obrazków - jak wczytac kod
Author
Message
27101985
Poziom 7
Poziom 7


Joined: 25 Nov 2005
Posts: 23
Location: Rydułtowy

Post#1 Post from the author of the topic 15 Mar 2010 00:38   

[MATLAB] PSNR obrazków - jak wczytac kod


Witam. Koledzy muszę odczytac PSNR z obrazków. Znalazłem gotową funkcję do matlaba jednak nigdy go nie używałem. Możecie podac jak ją wczytac żeby działała? http://www.mathworks.com/matlabcentral/fileexchange/135-psnr
Back to top
   
marianes
Poziom 9
Poziom 9


Joined: 07 Mar 2007
Posts: 32
Location: Warszawa

Post#2 15 Mar 2010 22:49   

Re: [MATLAB] PSNR obrazków - jak wczytac kod


Jeżeli masz wczytane obrazki, np. I1 i I2 to musisz je przeskalować, żeby wartości reprezentujących je macierzy zawierały się w przedziale [0 1]. Najprościej zrobić to tak:
Code:
I1=double(I1)/255;
I2=double(I2)/255;

Następnie wywołujesz funkcję:
Code:
PSNR(I1,I2)

i dostajesz gotowy wynik w dB.

Standardowo funkcja operuje na jednej warstwie więc jeśli wczytujesz kolorowy obraz to w pamięci jest on reprezentowany przez 3-wymiarowa macierz i próba takiego porównania da błąd.
Back to top
   
Google

Google Adsense


Post# 15 Mar 2010 22:49   





Back to top
   
27101985
Poziom 7
Poziom 7


Joined: 25 Nov 2005
Posts: 23
Location: Rydułtowy

Post#3 Post from the author of the topic 16 Mar 2010 09:22   

Re: [MATLAB] PSNR obrazków - jak wczytac kod


Ale jak się wczytuje ten kod. Każdy plik po kolei czy to można jakoś razem? Wcale nie miałem styczności z tym programem
Back to top
   
marianes
Poziom 9
Poziom 9


Joined: 07 Mar 2007
Posts: 32
Location: Warszawa

Post#4 16 Mar 2010 23:32   

Re: [MATLAB] PSNR obrazków - jak wczytac kod


Wczytujesz obraz np. tak:
Code:
I1=imread('obraz1.tif');

oczywiście plik musi się znajdować w bieżącym folderze, inaczej musisz podać pełną ścieżkę. Podobnie aby wywołać funkcję PSNR musisz przejść do katalogu w którym znajduje się plik PSNR.m lub skopiować ten plik do dowolnej ze ścieżek wyświetlonych poleceniem path.
Back to top
   
Google

Google Adsense


Post# 16 Mar 2010 23:32   





Back to top
   
27101985
Poziom 7
Poziom 7


Joined: 25 Nov 2005
Posts: 23
Location: Rydułtowy

Post#5 Post from the author of the topic 17 Mar 2010 23:38   

Re: [MATLAB] PSNR obrazków - jak wczytac kod


Wpisałem tak i pojawił się błąd
Quote:

>> z1=imread('c:\z1.bmp');
>> z2=imread('c:\z1.jpg');
>> z1=double(z1)/255;
>> z2=double(z2)/255;
>> PSNR(z1,z2)
??? Operands to the || and && operators must be convertible to logical scalar values.

Error in ==> PSNR at 73
if max2_A > 1 || max2_B > 1 || min2_A < 0 || min2_B < 0

Back to top
   
marianes
Poziom 9
Poziom 9


Joined: 07 Mar 2007
Posts: 32
Location: Warszawa

Post#6 19 Mar 2010 22:42   

Re: [MATLAB] PSNR obrazków - jak wczytac kod


Tak jak pisałem wcześniej - pewnie pliki są reprezentowane przez macierze 3D bo są kolorowe. Powinno działać jeśli miałbyś obrazy jako odcienie szarości. W takim przypadku możesz porównać np. warstwy dla składowej czerwonej:
Code:
PSNR(z1(:,:,1),z2(:,:,1))

Back to top
   
27101985
Poziom 7
Poziom 7


Joined: 25 Nov 2005
Posts: 23
Location: Rydułtowy

Post#7 Post from the author of the topic 20 Mar 2010 14:43   

Re: [MATLAB] PSNR obrazków - jak wczytac kod


OK udało sie. A możesz mi powiedzie co oznacza to w nawiasach
Code:
(:,:,1)

Wczytałem 2 razy ten sam obrazek. Co oznacza ten błąd?
Code:

z1=imread('c:\z1.bmp');
z2=imread('c:\z1.bmp');
z1=double(z1)/255;
z2=double(z2)/255;
PSNR(z1(:,:,1),z2(:,:,1))

??? Error using ==> PSNR at 65
Images are identical: PSNR has infinite value

Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 20 Mar 2010 14:43   





Back to top
   
marianes
Poziom 9
Poziom 9


Joined: 07 Mar 2007
Posts: 32
Location: Warszawa

Post#8 20 Mar 2010 20:26   

Re: [MATLAB] PSNR obrazków - jak wczytac kod


1) dane z obrazów reprezentowane są przez matrycę trójwymiarową, pierwsze dwa wymiary to współrzędne x, y piksela, trzeci wymiar to numer składowej systemu kolorów np. standardowo RGB - 3 składowe, czyli dla danych x i y (jeden piksel) mamy:
obraz(x,y,1) - wartość składowej czerwonej (R)
obraz(x,y,2) - wartość składowej zielonej (G)
obraz(x,y,3) - wartość składowej niebieskiej (B)

które to składowe dają nam w efekcie dany kolor, użycie:
obraz(:,:,1) oznacza całą płaszczyznę (wszystkie x i y) w tym wypadku dla składowej R.

2) obrazy są identyczne: PSNR ma nieskończoną wartość
Back to top
   
27101985
Poziom 7
Poziom 7


Joined: 25 Nov 2005
Posts: 23
Location: Rydułtowy

Post#9 Post from the author of the topic 21 Mar 2010 10:17   

Re: [MATLAB] PSNR obrazków - jak wczytac kod


Kolego a różnica całościowa to będzie ?
Code:
PSNR(z1(:,:,:),z2(:,:,:))


Dodano po 8 [minuty]:

A ta linijka zamienia wartości RGB od 0 do 1 czy coś innego robi?
Code:
z1=double(z1)/255;

Back to top
   
marianes
Poziom 9
Poziom 9


Joined: 07 Mar 2007
Posts: 32
Location: Warszawa

Post#10 21 Mar 2010 13:22helpful post - solution   

Re: [MATLAB] PSNR obrazków - jak wczytac kod


1) kod który napisałeś jest równoważny
Code:
PSNR(z1,z2)
więc otrzymasz błąd taki jak na początku
2) tak, to ma dokładnie takie zadanie gdyż funkcja PSNR wymaga wartości z przedziału [0,1]
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Programming Generally -> [MATLAB] PSNR obrazków - jak wczytac kod
Page 1 of 1
Similar topics
w jaki sposób wczytac *.bmp na wyswietlacz lcd 240x64? (2)
[Builder] Do czego wczytac plik txt ?? (1)
[php] Przesyłanie obrazków na serwer jak na Elektrodzie (1)
matlab - zmiana kontrastu za pomocą suwaka, kod do analizy (1)
Matlab, krótki program, kod do napisania w m-pliku. (4)
JAk wczytac kody z pilota TV do kompa (1)
[C] Jak wczytac sekwencje ułamkową ? (1)
Atmega16, nie idzie wczytac nic przez ISPcable II (3)
Jak połączyć Matlab z Paintem? (5)
Matlab filtrowanie. Jak to zrobić? (2)

Page generation time: 0.098 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed