Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Lajme
  • Metoda e kodimit analoge dhe diskrete. Përpunimi Furier i imazheve dixhitale

Metoda e kodimit analoge dhe diskrete. Përpunimi Furier i imazheve dixhitale

Imazhet e përbëra nga elementë diskrete, secila prej të cilave mund të marrë vetëm një numër të kufizuar vlerash të dallueshme që ndryshojnë në një kohë të kufizuar, quhen diskrete. Duhet theksuar se elementet e një imazhi diskrete, në përgjithësi, mund të kenë një zonë të pabarabartë dhe secila prej tyre mund të ketë një numër të pabarabartë gradimesh të dallueshme.

Siç u tregua në kapitullin e parë, retina transmeton imazhe diskrete në pjesët më të larta të analizuesit vizual.

Vazhdimësia e tyre e dukshme është vetëm një nga iluzionet e syrit. Ky "kuantizim" i imazheve fillimisht të vazhdueshme nuk përcaktohet nga kufizimet që lidhen me rezolucionin sistemi optik sy dhe as morfologjik blloqe ndërtimi sistemi vizual dhe organizimi funksional rrjetet nervore.

Imazhi ndahet në elemente diskrete nga fusha pritëse që kombinojnë një ose një numër tjetër fotoreceptorësh. Fushat pranuese prodhojnë përzgjedhjen parësore të të dobishmeve sinjal drite nga përmbledhja hapësinore dhe kohore.

Pjesa qendrore e retinës (fovea) është e zënë vetëm nga kone, në periferi jashtë foveës ka kone dhe shufra. Në kushtet e shikimit të natës, fushat konike në pjesën qendrore të retinës kanë përafërsisht të njëjtën madhësi (rreth 5 "në masë këndore). Numri i fushave të tilla në fovea, dimensionet këndore të të cilave janë rreth 90. rreth 200. Rolin kryesor në kushtet e shikimit natën e luajnë fushat me shufër, të cilat zënë pjesën tjetër të sipërfaqes së retinës. Ata kanë një madhësi këndore prej rreth 1° në të gjithë sipërfaqen e retinës. Numri i fushave të tilla në retinë është rreth 3000. Jo vetëm zbulimi, por edhe ekzaminimi i objekteve me ndriçim të dobët në këto kushte kryhet nga rajonet periferike të retinës.

Me një rritje të ndriçimit, një sistem tjetër i qelizave të ruajtjes, fushat pranuese të konit, fillon të luajë rolin kryesor. Në fovea, një rritje e ndriçimit shkakton një ulje graduale të forcës efektive të fushës derisa, me një shkëlqim prej rreth 100 asb, ajo reduktohet në një kon. Në periferi, me rritjen e ndriçimit, fushat e shufrave gradualisht fiken (ngadalësohen) dhe fushat e konit hyjnë në veprim. Fushat konike në periferi, si ato foveale, kanë aftësinë të zvogëlohen në varësi të energjisë së dritës që ka rënë mbi to. Numri më i madh e konëve, të cilat mund të kenë fushat pranuese të konit me ndriçim në rritje, rriten nga qendra në skajet e retinës dhe në një distancë këndore prej 50-60 ° nga qendra arrin afërsisht 90.

Mund të llogaritet se në kushte të mira drita e ditës numri i fushave receptive arrin në rreth 800 mijë.Kjo vlerë përafërsisht korrespondon me numrin e fibrave në nervin optik të njeriut. Dallimi (zgjidhja) e objekteve në vizionin e ditës kryhet kryesisht në fovea, ku fusha pritëse mund të reduktohet në një kon, dhe vetë konet janë të vendosura më dendur.

Ndërsa numri i qelizave të ruajtjes në retinë mund të përcaktohet në një përafrim të kënaqshëm, ka ende të dhëna të pamjaftueshme për të përcaktuar numrin e gjendjeve të mundshme të fushave receptive. Vetëm disa vlerësime mund të bëhen bazuar në studimin e pragjeve diferenciale të fushave pritëse. Kontrasti i pragut në fushat receptive foveale në një gamë të caktuar funksionimi të ndriçimit është i rendit 1. Në këtë rast, numri i shkallëzimeve të dallueshme është i vogël. Në të gjithë gamën e rirregullimit të fushës receptive të fovealit të konit, 8-9 gradime ndryshojnë.

Periudha e akumulimit në fushën receptive - e ashtuquajtura kohëzgjatja kritike - përcaktohet mesatarisht nga një vlerë e rendit prej 0,1 sek., por në nivele të larta ndriçimi, me sa duket, mund të reduktohet ndjeshëm.

Në fakt, modeli që përshkruan strukturën diskrete imazhet e transmetuara, duhet të jetë edhe më e vështirë. Do të ishte e nevojshme të merret parasysh marrëdhënia midis dimensioneve të fushës receptive, pragjeve dhe kohëzgjatjes kritike, si dhe natyrës statistikore të pragjeve vizuale. Por tani për tani, kjo nuk është e nevojshme. Mjafton të imagjinohet si model imazhi një grup elementësh të së njëjtës zonë, përmasat këndore të të cilave janë më të vogla se përmasat këndore të detajeve më të vogla të zgjidhshme nga syri, numri i gjendjeve të dallueshme të të cilave është më i madh se numri maksimal gradimet e dallueshme të shkëlqimit dhe koha e ndryshimit diskret të të cilave është më e vogël se periudha e dridhjes në frekuencën kritike të shkrirjes së dridhjes.

Nëse i zëvendësojmë imazhet e objekteve reale të vazhdueshme të botës së jashtme me imazhe të tilla diskrete, syri nuk do ta vërejë zëvendësimin.* Prandaj, imazhet diskrete të këtij lloji përmbajnë të paktën jo më pak informacion sesa percepton sistemi vizual. **

* Imazhet me ngjyra dhe vëllimore mund të zëvendësohen gjithashtu nga një model diskret.
** Problemi i zëvendësimit të imazheve të vazhdueshme me ato diskrete ka një rëndësi të madhe për teknologjinë e filmit dhe televizionit. Kuantizimi i kohës është në qendër të kësaj teknike. Në sistemet televizive me kod pulsi, imazhi gjithashtu ndahet në elementë diskrete dhe kuantizohet nga shkëlqimi.

Trego dhe trego Paskalin si shembull: 1) Çfarë është absolute dhe për çfarë shërben? 2) Çfarë është asm dhe për çfarë shërben? 3) Çfarë është

konstruktor dhe destruktor dhe për çfarë shërben?

4) Çfarë është zbatimi dhe për çfarë shërben?

5) Emërtoni modulet Pascal (në rreshtin Uses, për shembull crt) dhe çfarë veçorish ofron ky modul?

6) Cili është lloji i ndryshores: tregues (Pointer)

7) Dhe së fundi: çfarë do të thotë simboli @ , #, $ , ^?

1. Çfarë është një objekt?2. Çfarë është një sistem?3. Cili është emri i zakonshëm i një objekti? Jep një shembull.4. Cili është emri i një objekti të vetëm? Jep një shembull.5.

Jepni një shembull të një sistemi natyror.6. Jep një shembull të një sistemi teknik.7. Jepni një shembull të një sistemi të përzier.8. Jepni një shembull të një sistemi jomaterial.9. Çfarë është një klasifikim?10. Çfarë është një klasë objekti?

1. Pyetja 23 - listoni mënyrat e funksionimit të aksesit nënd:

Krijimi i një tabele në modalitetin e projektimit;
- krijoni një tabelë duke përdorur magjistarin;
- krijoni një tabelë duke futur të dhëna.

2. çfarë është format vektorial?

3. A mund t'i atribuohen programeve të shërbimit sa vijon:
a) programet e mirëmbajtjes së diskut (kopjimi, kurimi, formatimi, etj.)
b) kompresimi i skedarëve në disqe (arkivë)
c) lufta kundër viruseve kompjuterike dhe shumë më tepër.
Unë vetë mendoj se këtu përgjigja është B - apo jo?

4. Çfarë i referohet vetive të algoritmit (a. diskretiteti, b. efektiviteti, c. karakteri masiv, d. siguria, d. fizibiliteti dhe kuptueshmëria) - këtu mendoj se të gjitha opsionet janë të sakta. E drejtë apo jo?

test 7 pyetje të lehta me shumë zgjedhje

13. Shpejtësia e orës së procesorit është:

A. numri i operacioneve binare të kryera nga procesori për njësi të kohës

B. numri i pulseve të gjeneruara në sekondë që sinkronizojnë funksionimin e nyjeve kompjuterike

C. numri i thirrjeve të mundshme të procesorit në kujtesë e gjallë për njësi të kohës

D. shpejtësia e shkëmbimit të informacionit ndërmjet procesorit dhe pajisjeve hyrëse/dalëse

14. Specifikoni minimumin set i nevojshëm pajisje të dizajnuara për funksionimin e kompjuterit:

A. Printer, njësi të sistemit, tastierë

B. procesor, RAM, monitor, tastierë

C. procesor, transmetues, hard disk

D. monitor, njësi sistemi, tastierë

15. Çka është mikroprocesori?

A. qark i integruar, i cili ekzekuton komandat që vijnë në hyrjen dhe kontrollet e tij

Puna me kompjuter

B. një pajisje për ruajtjen e atyre të dhënave që përdoren shpesh në punë

C. pajisje për shfaqjen e informacionit tekst ose grafik

D. pajisje dalëse alfanumerike

16.Ndërveprimi i përdoruesit me mjedisi i softuerit kryhet duke përdorur:

A. sistemi operativ

B. sistemi i skedarëve

C. Aplikimet

d. menaxheri i skedarëve

17.Kontrolli i drejtpërdrejtë mjete softuerike përdoruesi mund të kryejë

Ndihmë:

A. sistemi operativ

B. GUI

C. UI

d. menaxheri i skedarëve

18. Mënyrat për të ruajtur të dhënat në media fizike përcakton:

A. sistemi operativ

B. softuer aplikimi

C. sistemi i skedarëve

d. menaxheri i skedarëve

19. Mjedis grafik që shfaq objektet dhe kontrollet Sistemet Windows,

Projektuar për lehtësinë e përdoruesit:

A. ndërfaqe harduerike

b) ndërfaqja e përdoruesit

C. desktop

d. ndërfaqen e softuerit

20. Shpejtësia e kompjuterit varet nga:

A. frekuenca e orës procesor

B. Nëse një printer është i lidhur apo jo

C. organizimi i ndërfaqes së sistemit operativ

D. hapësira e jashtme e ruajtjes

Imazhi analog dhe diskret. Informacion grafik mund të paraqitet në formë analoge ose diskrete. Nje shembull imazh analog mund të shërbejë si një kanavacë pikture, ngjyra e së cilës ndryshon vazhdimisht, dhe një shembull i një imazhi diskret, i printuar duke përdorur printer me bojë vizatimi i përbërë nga pikë individuale ngjyra të ndryshme. Analog (pikturë me vaj). Diskret.

rrëshqitje 11 nga prezantimi "Kodimi dhe përpunimi i informacionit". Madhësia e arkivit me prezantimin është 445 KB.

Informatikë klasa 9

përmbledhje prezantime të tjera

"Algoritmet e strukturës së degëzimit" - NESE kushti, PASTAJ veprimi. Çfarë dimë ne. Struktura e mësimit. Algoritmi i degëzimit. Drejtoni algoritmin dhe plotësoni tabelën. Një student që shënon nga 85 deri në 100 pikë përfshirëse kalon në raundin e dytë të konkursit. Shkruani numrin e pikëve dhe përcaktoni nëse ai kaloi në raundin e dytë. Gjeni numrin më të madh midis a dhe b. Shkruani një program në një gjuhë programimi. Një algoritëm degëzimi është një algoritëm në të cilin, në varësi të gjendjes, kryhet një ose një sekuencë tjetër veprimesh.

"Krijimi i inteligjencës artificiale" - Qasje simuluese. Qasje për ndërtimin e sistemeve të inteligjencës artificiale. qasje evolucionare. Inteligjence artificiale. Mund të bashkëjetojë me shumë njerëz, duke ndihmuar për të përballuar problemet personale. Qasja strukturore. qasje logjike. Problemet gjatë zhvillimit. Perspektivat për zhvillim dhe shtrirje.

"Programet ciklike" - Shifra. Lak me parakusht. Gjeni shumën. Lak me kusht postar. Cikli me një parametër. Algoritmi i Euklidit. Programet ciklike. Gjeni shumën numrat natyrorë. Koncepti i një cikli. Një tarifë fillestare. Tabelimi i funksionit. Llogaritni. Shembull. Ndarësit. Informatikë. Gjeni numrin e numrave. Per te gjetur. Gjeni numrin e numrave natyrorë treshifrorë. Numra treshifrorë. Gjeni bashkësinë e vlerave të funksionit. Tabela e konvertimit të dollarit.

"Çfarë është e-mail" - Dërguesi. Adresa e postës elektronike. Historia e emailit. Çështja e postës elektronike. Struktura e letrës. Drejtimi i postës. Letër. Email. Kopjo. Data e. X-mailer. Email. Si punon Email.

"Puna me e-mail" - Adresa e postës elektronike. Kuti postare. Protokolli i postës elektronike. rrjeti i ndarjes së skedarëve. Ndarja e adresave. Përfitimet e emailit. Klientët me email. Email shpikësi. Adresa. Email. Software email. Si funksionon emaili. Telekonferencë. Serveri i postës. Ndarja e skedarëve.

"Përpunimi në Photoshop" - Djema të mirë. Si të dalloni një fallco. Raster dhe imazhe vektoriale. Prezantimi. Vendet kryesore. Programi Adobe Photoshop. Retushimi. Konkurse Photoshop. Rregullimi i ndriçimit. Shoket e mi. Pjesa praktike. Programe të ngjashme. Pjesa kryesore. Dizajn. Kafshë të pazakonta. Montazh i shumëfishtë i imazheve.

Në kapitullin e mëparshëm, ne studiuam sistemet lineare të hapësirës së pandryshueshme në një fushë të vazhdueshme dy-dimensionale. Në praktikë kemi të bëjmë me imazhe që kanë përmasa të kufizuara dhe në të njëjtën kohë numërohen në një grup diskrete pikash. Prandaj, metodat e zhvilluara deri më tani duhet të përshtaten, zgjerohen dhe modifikohen në mënyrë që ato të mund të aplikohen në këtë fushë. Ekzistojnë gjithashtu disa pika të reja që kërkojnë shqyrtim të kujdesshëm.

Teorema e kampionimit thotë se në cilat kushte, nga një grup diskrete vlerash, është e mundur të rivendoset me saktësi imazh i vazhdueshëm. Do të mësojmë gjithashtu se çfarë ndodh kur nuk plotësohen kushtet për zbatueshmërinë e tij. E gjithë kjo lidhet drejtpërdrejt me zhvillimin e sistemeve vizuale.

Metodat që kërkojnë kalim në domeni i frekuencës, janë bërë të njohura pjesërisht për shkak të algoritmeve të shpejta të llogaritjes transformim diskret Furierit. Sidoqoftë, duhet pasur kujdes pasi përfshijnë këto metoda sinjal periodik. Ne do të diskutojmë se si mund të përmbushet kjo kërkesë dhe pasojat e shkeljes së saj.

7.1. Kufiri i madhësisë së imazhit

Në praktikë, imazhet kanë gjithmonë përmasa të fundme. Konsideroni një imazh drejtkëndor me gjerësi dhe lartësi R. Tani nuk ka nevojë të merren integrale në transformimin Fourier në kufij të pafundëm:

Çuditërisht, për të rivendosur funksionin, nuk kemi nevojë të dimë fare frekuenca. Njohja se çfarë është një kufizim i vështirë. Me fjalë të tjera, një funksion që është jozero vetëm në një rajon të kufizuar të planit të imazhit përmban shumë më pak informacion sesa një funksion që nuk e ka këtë veti.

Për ta verifikuar këtë, imagjinoni që rrafshi i ekranit është i mbuluar me kopje imazhi i dhënë. Me fjalë të tjera, ne e zgjerojmë imazhin tonë në një funksion që është periodik në të dy drejtimet

Këtu, është numri i plotë më i madh më i vogël se x. Transformimi Furier i një imazhi të tillë të shumëzuar ka formën

Nëpërmjet në mënyrë të përshtatshme faktorët e përzgjedhur të konvergjencës në p.sh. 7.1 vërtetohet se

Rrjedhimisht,

prej nga shohim se është e barabartë me zero kudo, përveç një grupi diskrete frekuencash.Kështu, për të gjetur mjafton që ne të dimë në këto pika. Sidoqoftë, funksioni merret nga një prerje e thjeshtë e seksionit për të cilin . Prandaj, për të rivendosur, mjafton të dimë vetëm për të gjithë.Ky është një grup numrash të numërueshëm.

Vini re se transformimi i funksionit periodik rezulton të jetë diskret. Transformimi i kundërt mund të përfaqësohet si një seri, pasi

Fotografi dixhitale ose ndryshe bitmapështë një grup numrash të kapur nga sensorë të nivelit të shkëlqimit në një plan dy-dimensional. Duke ditur që nga pikëpamja matematikore, një lente e hollë kryen transformimin Furier të imazheve të vendosura në plane fokale, është e mundur të krijohen algoritme të përpunimit të imazhit që janë analoge me përpunimin e imazhit në një sistem klasik optik.

Formula e algoritmeve të tilla do të duket si kjo:

  1. Z=FFT(X) – transformimi i drejtpërdrejtë dydimensional i Furierit
  2. Z′=T(Z) – aplikimi i një funksioni ose transparence në imazhin Furier të figurës
  3. Y=BFT(Z′) – transformim i anasjelltë dydimensional i Furierit
Transformimet Furier llogariten duke përdorur algoritme të shpejta diskrete të transformimit të Furierit. Megjithëse sistemi optik i thjerrëzave kryen transformimin Furier në diapazonin e vazhdueshëm të argumentit dhe për spektrin e vazhdueshëm, por kur kalon në përpunimi dixhital të dhënat, formulat e transformimit të Furierit mund të zëvendësohen me formula diskrete të transformimit të Furierit.

Shembuj zbatimi

  • Algoritmi i turbullimit të imazhit
Algoritmet e implementuara janë pjesë e një biblioteke me burim të hapur. Kodi i burimit Mjetet FFTT. Adresa e internetit: github.com/dprotopopov/FFTTools

Algoritmi i turbullimit të imazhit

Në sistemet optike, hapja e vendosur në planin fokal është një vrimë e thjeshtë në ekran. Si rezultat i kalimit fluksi ndriçues përmes diafragmës, valët me frekuencë të lartë (me gjatësi vale më të shkurtra) kalojnë përmes pengesës dhe valët me frekuencë të ulët (me gjatësi vale më të gjata) priten nga ekrani. Kjo përmirëson mprehtësinë e imazhit që rezulton. Nëse e zëvendësojmë vrimën në ekran me një pengesë në ekran, atëherë rezultati do të jetë imazh i paqartë, meqenëse do të formohet nga frekuencat e valëve me gjatësi të madhe.

Algoritmi:

  1. Llogaritni grupin Z′=T(Z), ku T është zerimi i rreshtave dhe kolonave të vendosura në rajonet e brendshme të dhëna të argumentit të matricës që i korrespondon frekuencave të larta 5. (d.m.th., zeroimi i koeficientëve të zgjerimit të Furierit që korrespondon te frekuencave të larta)

Algoritmi i mprehjes së imazhit

Në sistemet optike, hapja e vendosur në planin fokal është një vrimë e thjeshtë në ekran. Si rezultat i kalimit të fluksit të dritës nëpër diafragmë, valët me frekuencë të lartë (me gjatësi vale më të shkurtra) kalojnë nëpër pengesë dhe valët me frekuencë të ulët (me gjatësi vale më të mëdha) priten nga ekrani. Kjo përmirëson mprehtësinë e imazhit që rezulton.

Algoritmi:

  1. Le të jetë X(N1,N2) një grup i ndriçimit të pikselëve të imazhit.
  2. Llogaritni Px = ndriçimin mesatar (rms) të pikselëve në grupin X
  3. Llogaritni grupin Z=FT(X) - transformimi i drejtpërdrejtë dydimensional diskrete i Furierit
  4. Ruani vlerën L=Z(0,0) - që korrespondon me ndriçimin mesatar të pikselëve në imazhin origjinal
  5. Llogaritni grupin Z′=T(Z), ku T është zeroimi i rreshtave dhe kolonave të vendosura në rajonet e jashtme të dhëna të argumentit të matricës që korrespondon me frekuencat e ulëta 6. (d.m.th., zeroimi i koeficientëve të zgjerimit të Furierit që korrespondojnë në frekuenca të ulëta)
  6. Rivendos vlerën Z'(0,0)=L - që korrespondon me ndriçimin mesatar të pikselëve të imazhit origjinal
  7. Llogaritni grupin Y=RFT(Z′) – transformimi i anasjelltë 2D diskrete i Furierit
  8. Llogaritni Py = ndriçimin mesatar (rms) të pikselëve në grupin Y
  9. Normalizoni grupin Y(N1,N2) sipas nivelit mesatar të ndriçimit Px/Py

Algoritmi i shkallëzimit të imazhit

Në sistemet optike, fluksi i dritës në rrafshin fokal të sistemit është transformimi Furier i imazhit origjinal. Madhësia e imazhit të marrë në daljen e sistemit optik përcaktohet nga raporti i gjatësisë fokale të objektivit dhe okularit.

Algoritmi:

  1. Le të jetë X(N1,N2) një grup i ndriçimit të pikselëve të imazhit.
  2. Llogaritni Px = ndriçimin mesatar (rms) të pikselëve në grupin X
  3. Llogaritni grupin Z=FT(X) - transformimi i drejtpërdrejtë dydimensional diskrete i Furierit
  4. Llogaritni grupin Z′=T(Z), ku T ose shton zero rreshta dhe kolona të matricës që korrespondojnë me frekuencat e larta, ose fshin rreshtat dhe kolonat e matricës që korrespondojnë me frekuencat e larta për të marrë madhësinë e kërkuar të imazhit përfundimtar
  5. Llogaritni grupin Y=RFT(Z′) – transformimi i anasjelltë 2D diskrete i Furierit
  6. Llogaritni Py = ndriçimin mesatar (rms) të pikselëve në grupin Y
  7. Normalizoni grupin Y(M1,M2) sipas nivelit mesatar të ndriçimit Px/Py
Softueri i përdorur
  • Microsoft studio vizuale 2013 C# - mjedisi dhe gjuha e programimit
  • EmguCV/OpenCV - biblioteka C++ e strukturave dhe algoritmeve për përpunimin e imazhit
  • FFTWSharp/FFTW – biblioteka C++ që zbaton algoritme të shpejta diskrete të transformimit të Furierit

Algoritmi i turbullimit të imazhit

Kodi i algoritmit

///

/// Pastro rajonin e brendshëm të grupit /// /// Varg vlerash /// Madhësia e zonës së brendshme të verbër Të dhëna private statike të zbrazëta të verbër (komplekse[,], madhësia) ( int n0 = data.GetLength(0); int n1 = data.GetLength(1); int n2 = data.GetLength(2); int s0 = Math.Max(0, (n0 - madhësia. Lartësia)/2 int s1 = Math.Max ​​(0, (n1 - madhësia. Gjerësia)/2); int e0 = Math.Min ((n0 + madhësia. Lartësia)/2, n0); int e1 = Math.Min (( n1 + madhësia. Gjerësia)/2, n1); për (int i = s0; i< e0; i++) { Array.Clear(data, i*n1*n2, n1*n2); } for (int i = 0; i < s0; i++) { Array.Clear(data, i*n1*n2 + s1*n2, (e1 - s1)*n2); } for (int i = e0; i < n0; i++) { Array.Clear(data, i*n1*n2 + s1*n2, (e1 - s1)*n2); } } /// /// Bllok bitmap me Transformimi më i shpejtë i Furierit /// /// Bitmap i turbullt Blur publik Bitmap (Bitmap Bitmap) ( duke përdorur (var image = imazh i ri (bitmap)) ( int gjatësi = imazh.Data.Gjatësia; int n0 = imazh.Data.GetLength(0); int n1 = imazh.Data.GetLength(1); int n2 = imazh.Data.GetLength(2); var doubles = i ri double;Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (dyfish));fuqi e dyfishtë = Math.Sqrt(doubles.Average(x => x*x));vare hyrje = new fftw_complexarray(doubles.Select(x => new Complex(x, 0)).ToArray());var output = new fftw_complexarray(gjatësia); fftw_plan.dft_3d(n0, n1, n2, hyrje, dalje, fftw_drejtim. Përpara, fftw_flags.Estimate).Execute(); Kompleks kompleks = output.GetData_Complex(); të dhëna var = Kompleks i ri; var buffer = dyfish i ri; kompleks GCHandle Handle = GCHandle.Alloc(kompleks, GCHandleType.Pinned); GCHandle dataHandle =G .Alloc (të dhëna, GCHandleType.Pinned); IntPtr kompleksPtr = kompleksHandle.AddrOfPinnedObject();IntPtr dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.Copy(complexPtr, buffersh.,buffershLth, 0); , dataPtr, buffer.Length); Blind(të dhëna, _blind erSize); Marshal.Copy(dataPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, complexPtr, buffer.Length); kompleksHandle.Free(); dataHandle.Free(); hyrje.SetData(kompleks); fftw_plan.dft_3d(n0, n1, n2, hyrje, dalje, fftw_drejtimi. Prapa, fftw_flags. Vlerësimi).Ekzekutoni(); grup i dyfishtë2 = dalje.GetData_Kompleks().Zgjidh(x => x.Madhësia).ToArray(); fuqi e dyfishtë2 = Math.Sqrt(array2.Mesatar(x => x*x)); dyfishon = grup2.Zgjidh(x =>

Algoritmi i mprehjes së imazhit

Kodi i algoritmit

///

/// Pastro rajonin e jashtëm të grupit /// /// Varg vlerash /// Madhësia e zonës së jashtme të verbër zbrazëti private statike Blind(Të dhëna komplekse[,], madhësia e madhësisë) ( int n0 = të dhëna.GetLength(0); int n1 = të dhëna.GetLength(1); int n2 = të dhëna.GetLength(2); int s0 = Math. Max(0, (n0 - madhësia. Lartësia)/2); int s1 = Math.Max ​​(0, (n1 - madhësia. Gjerësia)/2); int e0 = Mat. Min ((n0 + madhësia. Lartësia)/ 2, n0); int e1 = Math.Min ((n1 + madhësia. Gjerësia)/2, n1); për (int i = 0; i< s0; i++) { Array.Clear(data, i*n1*n2, s1*n2); Array.Clear(data, i*n1*n2 + e1*n2, (n1 - e1)*n2); } for (int i = e0; i < n0; i++) { Array.Clear(data, i*n1*n2, s1*n2); Array.Clear(data, i*n1*n2 + e1*n2, (n1 - e1)*n2); } } /// /// Bitmap i mprehtë me transformimin më të shpejtë të Furierit /// /// bitmap i mprehur publike Bitmap Sharp (Bitmap bitmap) ( duke përdorur (var image = imazh i ri (bitmap)) ( int gjatësi = imazh.Data.Gjatësia; int n0 = imazh.Data.GetLength(0); int n1 = imazh.Data.GetLength(1); int n2 = imazh.Data.GetLength(2); var doubles = i ri double;Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (dyfish));fuqi e dyfishtë = Math.Sqrt(doubles.Average(x => x*x));vare hyrje = new fftw_complexarray(doubles.Select(x => new Complex(x, 0)).ToArray());var output = new fftw_complexarray(gjatësia); fftw_plan.dft_3d(n0, n1, n2, hyrje, dalje, fftw_drejtim. Përpara, fftw_flags.Estimate).Execute(); Kompleks kompleks = output.GetData_Complex(); Niveli kompleks = kompleks; var të dhëna = Kompleks i ri; var buffer = dyfish i ri; kompleks GCHandleHandle = GCHandle.Alloc(kompleks, GCHandleType.Pinned) ; GCHandle dataHandle = GCHandle.Alloc (të dhëna, GCHandleType.Pinned); IntPtr kompleksPtr = kompleksHandle.AddrOfPinnedObject();IntPtr dataPtr = dataHandle.AddrOfPinnedObject(); Marshal.,Buffer.,Plextreng. Kopjo (buffer, 0, dataPtr, buffer.Le ngth); Blind(të dhënat, _blinderSize); Marshal.Copy(dataPtr, buffer, 0, buffer.Length); Marshal.Copy(buffer, 0, complexPtr, buffer.Length); kompleksHandle.Free(); dataHandle.Free(); kompleks = nivel; hyrje.SetData(kompleks); fftw_plan.dft_3d(n0, n1, n2, hyrje, dalje, fftw_drejtimi. Prapa, fftw_flags. Vlerësimi).Ekzekutoni(); grup i dyfishtë2 = dalje.GetData_Kompleks().Zgjidh(x => x.Madhësia).ToArray(); fuqi e dyfishtë2 = Math.Sqrt(array2.Mesatar(x => x*x)); dyfishon = grup2.Zgjidh(x => x*fuqi/fuqi2).ToArray(); Buffer.BlockCopy(dyfish, 0, imazh.Të dhënat, 0, gjatësia*madhësia e (dyfish)); kthimi i imazhit.Bitmap; ) )

Algoritmi i shkallëzimit të imazhit

Kodi i algoritmit

///

/// Kopjo vargje /// /// grupi i hyrjes /// grupi i daljes Kopjo private statike e zbrazët (Kompleks[,] hyrje, Kompleks[,] dalje) ( int n0 = hyrje.GetLength(0); int n1 = hyrje.GetLength(1); int n2 = hyrje.GetLength(2); int m0 = output.GetLength(0);int m1 = output.GetLength(1);int m2 = output.GetLength(2);int ex0 = Math.Min(n0, m0)/2;int ex1 = Math.Min(n1 , m1)/2;int ex2 = Math.Min(n2, m2);Debug.Assert(n2 == m2);for (int k = 0;k< ex2; k++) { for (int i = 0; i <= ex0; i++) { for (int j = 0; j <= ex1; j++) { int ni = n0 - i - 1; int nj = n1 - j - 1; int mi = m0 - i - 1; int mj = m1 - j - 1; output = input; output = input; output = input; output = input; } } } } /// /// Ndryshimi i madhësisë së bitmap me transformimin më të shpejtë të Furierit /// /// Bitmap i ndryshuar përmasat publike Bitmap Stretch(Bitmap bitmap) ( duke përdorur (var image = imazh i ri (bitmap)) ( int gjatësi = imazh.Data.Gjatësia; int n0 = imazh.Data.GetLength(0); int n1 = imazh.Data.GetLength(1); int n2 = imazh.Data.GetLength(2); var dyfish = dyfish i ri;Buffer.BlockCopy(image.Data, 0, doubles, 0, length*sizeof (dyfish));fuqi e dyfishte = Math.Sqrt(doubles.Average(x => x*x));vare hyrje = i ri fftw_complexarray(doubles.Select(x => Kompleksi i ri(x, 0)).ToArray());var output = i ri fftw_complexarray(gjatësia); fftw_plan.dft_3d(n0, n1, n2, hyrje, dalje, fftw_drejtim. Përpara, fftw_flags.Estimate).Execute(); Kompleksi kompleks = output.GetData_Complex(); duke përdorur (var image2 = imazh i ri (_newSize)) ( gjatësia int2 = image2.Data.Gjatësia; int m0 ​​= image2.Data.GetLength(0); int m1 = image2.Data.GetLength(1); int m2 = image2.Data.GetLength(2 ); var kompleks2 = Kompleks i ri; të dhëna var = Kompleks i ri; var të dhëna 2 = Kompleks i ri; var bufer = dyfish i ri; kompleks GCHandleHandle = GCHandle.Alloc(kompleks, GCHandleType.Pinned); GCHandle dataHandle = GCHandle.Alloc(të dhëna, GCHandleType .Gjeshtë); ); ); tampon.Gjatësia); kompleksHandle.Free(); dataHandle.Free(); var input2 = new fftw_complexarray(complex2); var output2 = new fftw_complexarray(gjatësia2); fftw_plan.dft_3d(m0, m1, m2, input2, output2, fftw_direction.Backward, fftw_flags.Estimate).Ekzekutoni(); grup i dyfishtë2 = output2.GetData_Complex().Zgjidh(x => x.Madhësia).ToArray(); fuqi e dyfishtë2 = Math.Sqrt(array2.Mesatar(x => x*x)); double doubles2 = array2.Zgjidh(x => x*power/power2).ToArray(); Buffer.BlockCopy(doubles2, 0, image2.Data, 0, length2*sizeof (dyfish)); ktheje imazhin2.Bitmap; ) ))

Artikujt kryesorë të lidhur