Gå til innhold

Anbefalte innlegg

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? :p

Lenke til kommentar
Videoannonse
Annonse

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 av NevroMance
Lenke til kommentar

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

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

hvordan skal jeg lage et svart bilde med en hvit sentrert sirkel? :p

 

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

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

Det viser seg at det var det å skrive ut alle matrisene som tok lang tid. :p 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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...