Kubjelle Skrevet 21. mars 2010 Del Skrevet 21. mars 2010 Jeg har et gråskalert bilde, i im2double-verdier. Jeg skal lage et et lavpassfilter som er like stort som dette bildet. Som jeg senere skal elementvis multiplisere med det bildet som er fourier transformert. Det jeg egentlig spør om er: hvordan skal jeg lage et svart bilde med en hvit sentrert sirkel? Lenke til kommentar
NevroMance Skrevet 21. mars 2010 Del Skrevet 21. mars 2010 (endret) Hmmm... Litt usikker, men du kan jo forsøke å lage en liten matrise med en hvit sentrert sirkel, og så forsøke å skallere den opp? Ellers kan du forsøke å lage sirkelen ved å bruke cos/sin for å finne enhetssirkelen og så skallere den opp. Jeg ville forsøkt den første først, vil tro den skal mappes til riktige farger, men er jo selvsagt ikke 100% sikker. Endret 21. mars 2010 av NevroMance Lenke til kommentar
Kubjelle Skrevet 21. mars 2010 Forfatter Del Skrevet 21. mars 2010 Jeg må lage en matrise bestående av 0er og 1ere, der 1erne står for hvit og 0erne står for svart og hvert element i matrisen tilsvarer en pixel. Det jeg ikke skjønner er hvordan jeg skal gjøre det. =P Forresten så er bildet mitt bare 100x100 piksler, så jeg trenger "bare" en 100x100 matrise. Lenke til kommentar
NevroMance Skrevet 21. mars 2010 Del Skrevet 21. mars 2010 Vel, min tanke var å lage en matrise, si 10x10, som er 0 bortsett fra en sirkel inni som er 1. Deretter kan du forsøke å skallere denne opp til hva du trenger. Er ikke 100% sikker på at det vil fungere, men verdt ett forsøk. Det andre jeg tenkte var at du kan lage en svart matrise som er 100x100, og så bruke cos/sin funksjoner for å finne hvor 1erne skal. Da må du tenke deg at origo ligger i midten av bildet, altså (50,50), og så jobbe derfra. Lenke til kommentar
asicman Skrevet 22. mars 2010 Del Skrevet 22. mars 2010 hvordan skal jeg lage et svart bilde med en hvit sentrert sirkel? Du kan bruke gimp, photoshop osv. deretter bruke imtool i matlab til å eksportere tegningen til en variabel. Hvis du skal skrive kode for å lage en sirkel kan du bruke f.eks. sin/cos som nevnt eller Bresenham's sirkel algoritme. Lenke til kommentar
Kubjelle Skrevet 23. mars 2010 Forfatter Del Skrevet 23. mars 2010 Hmm, tror jeg delvis greide det. L = zeros(100,100) for kuk=0:10 for i=0:360 C=ceil(cos(i)*kuk) B=ceil(sin(i)*kuk) L(50+(B),50+(C))=1 end end Men det tar latterlig lang tid å kjøre koden, minst 2min, det må da være en bedre måte å gjøre det på? Dessuten ble den ikke spessielt rund. =/ Lenke til kommentar
Kubjelle Skrevet 23. mars 2010 Forfatter Del Skrevet 23. mars 2010 Det viser seg at det var det å skrive ut alle matrisene som tok lang tid. Fikset seg når jeg skrev ;, bak operasjonene. Finnes det forresten en lett måte å lage en 100x100 matrise bestående av 1ere? Jeg vet at jeg kan bruke forløkker, men det virker litt overkill. Lenke til kommentar
NevroMance Skrevet 23. mars 2010 Del Skrevet 23. mars 2010 A=ones(100); gir en 100x100 matrise med kun enere. Lenke til kommentar
asicman Skrevet 29. mars 2010 Del Skrevet 29. mars 2010 Jeg vet at jeg kan bruke forløkker, men det virker litt overkill. Det greie med matlab er at man slipper å bruke for-løkker, men skriver start:step:slutt i tilordningen som vist nedenfor: octave> m=eye(10) m = 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 octave> m(1:1:end,1:1:end)=3 m = 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 octave> m(:,=4 m = 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 octave> m(1:2:end,1:2:end) = 8 m = 8 4 8 4 8 4 8 4 8 4 4 4 4 4 4 4 4 4 4 4 8 4 8 4 8 4 8 4 8 4 4 4 4 4 4 4 4 4 4 4 8 4 8 4 8 4 8 4 8 4 4 4 4 4 4 4 4 4 4 4 8 4 8 4 8 4 8 4 8 4 4 4 4 4 4 4 4 4 4 4 8 4 8 4 8 4 8 4 8 4 4 4 4 4 4 4 4 4 4 4 Jeg har brukt 10 i stedet for 100 i mitt eksempel. Lenke til kommentar
Kubjelle Skrevet 29. mars 2010 Forfatter Del Skrevet 29. mars 2010 Oi, det var ikke dumt nei! Men jeg brukte forløkker, fordi jeg egentlig skulle ha levert inn obligen for en stund siden. Jeg tenkte faktisk på å bruke ones(100), men tenkte at det måtte være for enkelt! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå