itthon » Ehető gomba » Forgassa el a képet a közepén. Raszteres kép tetszőleges szögben történő pontos elforgatása

Forgassa el a képet a közepén. Raszteres kép tetszőleges szögben történő pontos elforgatása

A trigonometria számos kifejezése közül a fogalom fontos forgási szög. Ebben a cikkben megvizsgáljuk a forgatást és az összes megfelelő definíciót; Adjunk képet a teljes forradalomról; Tanulmányozzuk az elforgatási szöget és annak jellemzőit, valamint az ábra pont körüli elforgatását. A jobb megértés érdekében az elméletet illusztrációkkal és gyakorlati példákkal látjuk el.

Yandex.RTB R-A-339285-1 1. definíció

Forgás középpontja– az a pont, amelyről a forgatás történt.

Nézzük meg, mi történik egy pont elforgatásának eredményeként. Hagyja, hogy egy A pont forogjon az O forgásközépponthoz képest, és az A pont 1 legyen (bizonyos számú teljes fordulat megtétele után egybeeshet az A ponttal). Ebben az esetben az A 1 pont egy olyan körön fekszik, amelynek középpontja az O pontban van, O pont sugara. Más szóval, amikor az A pont az O ponthoz képest elfordul, akkor az O sugarú körön fekvő A 1 pontba kerül. O A.

Úgy tartják, hogy ben ebben az esetben az O pont önmaga megfordulásakor önmagába fordul. Vagy: amikor az O pont az O forgásközéppont körül forog, önmagába fordul.

Azt is megjegyezzük, hogy az A pontnak az O középponthoz viszonyított elforgatását többek között az A pont O pontban O A sugarú O pontban lévő középpontú kör mentén történő elmozdulása következtében fellépő elmozdulásnak kell tekinteni.

Ábrázoljuk grafikusan az A pont O ponthoz viszonyított elfordulását, és jelöljük nyíllal az A pont mozgását A 1 pontba:

Az A pontot el lehet forgatni az O forgásközépponthoz képest úgy, hogy az A pont a kör összes pontján áthaladva visszatér eredeti helyére. Akkor azt mondjuk, hogy a pont teljes forradalmat tett az O pont körül.

Illusztráljuk:

Ha az A pont mozgása a kör mentén folytatódik, akkor két, három és így tovább teljes fordulat teljesül. Az alábbi ábrán két teljes fordulat látható a jobb oldalon és három a bal oldalon:

A fentiek keretein belül egy teljes forradalom részeiről is beszélhetünk. Például körülbelül egy fél fordulat, vagy egy harmada, vagy egy negyed, és így tovább.

Forgási szög

A fordulópont fenti koncepciójából nyilvánvaló, hogy lehetséges végtelen halmaz Az A pont O középponthoz viszonyított elforgatásának változásai. Az O középpontú kör bármely pontja tekinthető az A pont elforgatása eredményeként kapott A 1 pontnak. Ezért az egyik és a másik elforgatás közötti különbség meghatározásához a elforgatási szög fogalmát vezetjük be.

A forgásszögnek megvannak a maga sajátosságai, amelyek közül az egyik a forgásirány. Arra használják, hogy meghatározzák, hogyan mozgott a pont - az óramutató járásával megegyező vagy ellentétes irányba.

A forgásszög másik jellemzője a nagysága . Az elforgatási szögek mértékegysége megegyezik a geometriai szögekkel: a fokok és a radiánok a leggyakoribbak. Megjegyzendő, hogy a forgásszög bármilyen fokban kifejezhető. valós szám- ∞ és + ∞ tartományban, ami megkülönbözteti a geometriai szögtől, amely csak kifejezett pozitív szám, legfeljebb 180 °.

Az elforgatási szögek jelzésére alapkivitelben a betűket használjuk görög ábécé: α, β, γ és így tovább. Jelezni nagyszámú elforgatási szögek esetén ugyanazt a betűt használja különböző alsó indexekkel: α 1, α 2, α 3…. . αn.

Nézzük meg részletesebben az elforgatási szög jellemzőit.

Jelöljük az O középpontú kör A és A 1 pontjait. Az A 1 ponthoz az O középponthoz viszonyított elforgatásával lehet eljutni az óramutató járásával megegyező vagy azzal ellentétes irányban. Nyilvánvaló, hogy ezeket a fordulatokat különbözőként határozzuk meg.

Íme egy grafikus illusztráció a különféle kanyarokról: a rajzon bal oldalon egy befordulás látható pozitív irány; jobb oldalon - negatívban.

Egy olyan pont forgásszögét, amely nem a forgás középpontja, teljes mértékben az értékének megadásával határozzuk meg. Másrészt az elforgatási szög nagyságával meghatározható, hogy az elforgatás hogyan történt.

Amint fentebb említettük, az elforgatási szög - ∞ és + ∞ között változik;

2. definíció

Jel plusz meghatározza az óramutató járásával ellentétes forgást, és mínusz- az óramutató járásával megegyező irányba.

Meg kell teremteni a megfeleltetést magának az elforgatási szögnek az értéke és a hozzá tartozó elfordulás között.

Legyen az elforgatási szög 0°. Ez az elforgatási szög megfelel az önmagába mozgó pontnak. Más szóval, amikor az O pont körül 0°-kal elforgatjuk, az A pont a helyén marad.

Most tegyük fel, hogy az A pont forgása fél fordulaton belül történik: menjen A pont az A 1 pontba. Ebben az esetben abszolút érték az A O A 1 szög fokban kifejezve nem haladja meg a 180-at. Ha a fordulatnak pozitív iránya volt, akkor a forgásszög értékét veszik figyelembe egyenlő az értékkel szög A O A 1; ha negatív, akkor az elforgatási szög egyenlő az A O A 1 szöggel, mínusz előjellel. Ezen állítások illusztrálására mutassuk be a rajzon a 30°, 180° és -150° elforgatási szögeket:

A 180-nál nagyobb vagy 180-nál kisebb elfordulási szögeket az egymást követő fordulatok nyilvánvaló tulajdonsága alapján határozzák meg:

3. definíció

Az A pontnak az O középponthoz viszonyított több egymást követő elforgatása egy elforgatással ekvivalens, amelynek nagysága megegyezik ezen elforgatások nagyságának összegével.

Tekintsünk egy példát, amely lehetőséget ad a leírt tulajdonság grafikus ábrázolására. Az A pont az O középponthoz képest 45°-kal, majd egy másik 60°-kal, és ismét -35°-kal forogjon el. Jelöljük a közbenső fordulópontokat A 1 , A 2 és A 3 . BAN BEN végpont A 3-at pedig el lehetett ütni egy fordulattal a forgásszögben, amelynek értéke: 45 ° + 60 ° + (- 35 °) = 70 °. Illusztráljuk:

Így a 180°-ot meghaladó szögeket több egymást követő fordulatként fogjuk ábrázolni szögenként, amelyek értékeinek összege határozza meg a kezdeti elforgatási szög értékét. Például a 298°-os elforgatási szög 180°-os és 118°-os, vagy 90°-os, 90°-os, 90°-os és 28°-os, vagy 180°-os, 180°-os és -62°-os, vagy 298 egymást követő 1-es fordulatnak felel meg. °.

A 180°-nál kisebb szögek meghatározása ugyanezen elv alapján történik. Például a -515°-os elforgatási szög -180°-os, -180°-os és -155°-os egymást követő elforgatásokként definiálható.

Meghatároztuk a forgásszöget, és annak értékét valamilyen - ∞ és + ∞ közötti valós szám fejezi ki fokokban. A trigonometria kifejezetten az elforgatási szögekkel működik, bár a kényelem kedvéért a „forgás” szót kihagyjuk, és a „szög” szót mondjuk. Azok. Tetszőleges nagyságú szögeket fogunk figyelembe venni, vagyis az általuk elforduló szögeket.

Végül azt is megjegyezzük, hogy a pozitív irányú teljes elforgatás 360°-os vagy 2 π radián elforgatási szögnek felel meg. Ennek megfelelően mikor negatív irány egy teljes fordulat - 360°-os vagy -2 π radián szögnek felel meg.

Ebben az esetben célszerű elképzelni a nagy elforgatási szögeket bizonyos számú teljes fordulatként és még egy -180 ° és 180 ° közötti mennyiségben. Például az elforgatás 1478°. Képzeljük el ezt az értéket a következőképpen: 360 · 4 + 38, azaz. egy adott forgásszög 4 teljes fordulatnak és még egy fordulatnak felel meg - 38 °. Vagy egy másik példa: egy -815°-os elforgatási szöget (- 360) 2 + (- 95) ábrázolhatunk, azaz. egy adott elforgatási szög 2 teljes fordulatnak negatív irányban (az óramutató járásával ellentétes irányban) és egy másik azonos irányú -95°-os fordulatnak felel meg.

A pont elforgatásának fogalma könnyen kiterjeszthető bármely alaknak egy pont körüli szöggel történő elforgatására (olyan elforgatásra, amelyben a forgatási pont és maga az elforgatott ábra is ugyanabban a síkban van).

3. definíció

Forgass el egy figurát az összes pontjának körbefordulása adott pont számára adott szög.

Példaként szemléltetjük a következő műveletet: az A B szakasz elforgatása α szöggel az O ponthoz képest - elforgatva az adott szakasz az A 1 B 1 szakaszba kerül.

Ha hibát észlel a szövegben, jelölje ki, és nyomja meg a Ctrl+Enter billentyűkombinációt

A raszteres kép elforgatása 90°-os többszöröse szögekkel geometriai középpont A képek triviális feladat, és minőségromlás nélkül megoldható az egyes pixelek koordinátáinak egyszerű átalakításával.

Az alábbiakban egy algoritmust fogunk megnézni a raszteres kép precíziós elforgatására tetszőleges szög tetszőleges centrumhoz képest minimális veszteséggel.

Hálás köszönetemet fejezem ki Vlagyiszlav Vlagyimirovics Harcsenkónak a nyújtott segítségért.

Algoritmus

A fenti ábrán látható, hogy a raszteres kép elforgatása után a végső kép egyes pixeleinek színét úgy határozzuk meg, hogy az eredeti kép több pixeléből több „töredék” színét összeadjuk a megfelelő kép területeivel arányosan. „töredékek”. Ezért be Általános nézet Problémánk megoldása az lesz, hogy az eredeti kép minden pixeléhez megkeressük az összes „szilánk” területét, és összegyűjtjük a végső kép egyes pixeleinek színét a megfelelő „szilánkok” színeiből.

Az eredeti kép pixelmodelljeként egy négyzetet használunk, amelynek oldala = 1, a sarkokra a következő jelölésekkel:
i1 - jobb szélső sarok;
i2 - legalacsonyabb sarok;
i3 - bal szélső sarok;
i4 a legfelső sarok.

A végső képmodell párhuzamos vízszintes és függőleges vonalakból álló rács lesz, a vonalak távolsága = 1.

A raszteres kép forgásközéppontjának koordinátái ebben az ábrázolásban tetszőleges valós számok párjaként fejezhetők ki. Ez azt jelenti, hogy feladatunkban a forgás középpontja nem a pixel geometriai középpontjában és nem a rácsvonalak metszéspontjában lehet, hanem egy tetszőleges pontban a derékszögű koordinátákban.

Mivel a raszteres kép elforgatásakor minden képpont négyzete azonos szöggel (az adott pixel közepéhez viszonyítva) elfordul, a feladatot egy pixelre oldjuk meg, majd a kapott megoldást alkalmazzuk az eredeti kép minden egyes pixelére. kép.

A bittérkép elforgatása két részre osztható:
1. Forgassa el az eredeti kép minden pixelének négyzetét a négyzet közepéhez képest egy adott szöggel.
2. A pixelnégyzet középpontjának eltolása a kép forgási szögének megfelelően a kép elforgatási középpontjához képest úgy, hogy a négyzet a végső kép rácsán véglegesen elfoglalja a helyét.
Ebben az esetben a végső kép rácsja az eredeti kép egyes pixeleinek négyzetét 4, 5 vagy 6 darab „szilánkokra” vágja.

Az eredményül kapott lehetőségek sokféleségének rendszerezéséhez taxonómiát kellett készítenem az eredeti kép pixelnégyzetének és a végső kép rácsának összes lehetséges metszéspontjáról. Csak 23 jelentősen eltérő lehetőség volt:



A konvenciók itt a következők:
- a cellákban lévő számok a képelforgatás után a végső képrács adott cellájába eső pixelnégyzet sarkainak számát jelölik;
- zöld azokat a cellákat jelzik, amelyekbe a pixel egyes részei beleestek, és garantáltan „szilánkot” hagynak ott;
- sárga jelzi azokat a cellákat, amelyekbe a körülményektől függően tud a pixel négyzet „töredékeit” találja el (vagy nem találja el), amelyeket nem a négyzet sarkai, hanem a négyzet oldalai alkotnak.

Az érthetőség kedvéért megadom a 3. lehetőség egyik lehetséges változatát:

Amint látható, a jobb felső cella nem tartalmaz egy pixel „töredékét”, bár más forgatási körülmények között előfordulhatna.
Annak érdekében, hogy ne terhelje az olvasót részletes geometriai számításokkal, azonnal elmondom, hogy mind a 23 lehetőségnél az eredeti kép pixelét „szilánkra” vágják, amelyek területe könnyen kiszámítható 4 képlet kombinálásával. . Alább láthatók ezek a képletek illusztrációkkal. A piros szín jelzi a végső kép azon rácsvonalait, amelyek átvágják a pixelnégyzetet. Az a terület, amelynek területét a képlet kiszámítja, sárga színű.

Forma-1

Ezt a képletet nem a „szilánk” végső területének kiszámítására használják, de kényelmesen használható a köztes segédterületek gyors kiszámításához, mivel tudjuk, hogy a teljes pixel területe = 1.
Minden képletben bemeneti változóként a négyzet sarkaiból a végső kép rácsára eső magasságokat használjuk azon egyszerű oknál fogva, hogy ezeknek a magasságoknak a kiszámítása a tört rész azonnali kiválasztásához vezet. numerikus érték a pixelnégyzet megfelelő sarkának koordinátáit.

Forma 2


Ezt a képletet csak az 1. és 2. lehetőség használja.

Forma 3

Gyakran használt képlet – az a jó, hogy gyorsan kiszámolható. Mivel az elforgatási szög minden pixelnél azonos - minden trigonometrikus függvények megszámolhatja egyszer, az összes pixel feldolgozása előtt, majd ezeket az értékeket a hurokban konstansként használhatja.

Forma 4

Ezt a képletet két lépésben számítják ki. Először a zárójelben lévő kifejezést értékeljük ki. Ha elfogadja pozitív érték, akkor a terület kiszámításra kerül. Ha az érték negatív, akkor a pixelből nem vágódik le „szálka”, szög alkotja háló és a négyzet oldala, és nincs értelme további számításokat végezni.

A fentiek figyelembevételével az algoritmus általában így fog kinézni:
1. Töltse be az eredeti képet a számítógép memóriájába.
2. Számítsa ki a végső kép méreteit pixelben!
3. Hozzon létre egy köztes kétdimenziós tömböt, melynek minden eleme 3 lebegőpontos számformátumú RGB színkomponenst tartalmaz. A tömb méretei megegyeznek a végső kép méreteivel.
4. Sorban végigmegyünk a forráskép összes pixelén; mindegyiket elforgatjuk adott szöggel, és a képpont négyzet sarkainak 4 koordinátáját kiszámolva a végső kép rácsára helyezzük; a pixelt 23 opcióba soroljuk, és megszámoljuk a „töredékek” területeit; A kapott „szilánkok” színeit hozzáadjuk a közbenső tömb megfelelő elemeihez a „szilánkok” területének arányában.
5. Az eredeti kép összes pixelének feldolgozása után a közbülső tömbben lévő RGB értékeket minden elemhez egész értékre kerekítjük, és ezen egész értékek alapján létrehozzuk a végső képet BMP formátumban.

Program

A fenti algoritmus alapján készült egy program Windowshoz. Az Object Pascal forráskódja és a lefordított futtatható fájl letölthető.

Program interfész.
A „Megnyitás...” gombra kattintva megnyílik a BMP fájl kiválasztási párbeszédpanel. Csak a 24 bites palettával rendelkező bitképek támogatottak. A megnyitott kép egy ablakban jelenik meg. Az ablak címe megjeleníti a fájl teljes elérési útját és a kép méreteit.

A „Szög” mezőben adja meg az elforgatási szöget fokban – bármilyen pozitív szám.
Tizedes elválasztóként beíráskor törtszámok Akár pont, akár vessző használható.

A „CW” és „CCW” rádiógombok állítják be a forgásirányt: „óramutató járásával megegyező”, illetve „balra”.

A „Háttérszín” blokkban beállíthatja azt a háttérszínt, amellyel a kép szegélypixelei keveredni fognak. Az alapértelmezett háttérszín a fekete.

Az „X középpont” és „Y középpont” mezőkben a forgásközéppont koordinátái vannak megadva. Figyelembe kell venni, hogy a koordináták origója a bal oldalon van felső sarok kép és Y lefelé növekszik. Alapértelmezés szerint az elforgatás középpontja a betöltött kép geometriai középpontja.

A „Forgatás” gombra kattintva vagy az Enter billentyű lenyomásával a kép a megadott forgatási középponthoz képest meghatározott szögben elfordul, és megjelenik az ablakban. A kép 90°-os többszörös szögben történő elforgatása egyszerűsített séma szerint történik, az eredeti kép pixelkoordinátáinak egyszerű átalakításával, miközben a „Center X” és a „Centre Y” értékeket figyelmen kívül hagyja.
Az algoritmus működési ideje másodpercben a „Forgatás” gomb alatt jelenik meg.

A „Mentés…” gombbal az elforgatott kép BMP fájlba menthető.

Ha a végső kép nem fér el az ablakban, akkor a StretchBlt API függvény segítségével az ablak határaihoz igazítja, ezért értékelje igazi minőség nagy képek csak mentett BMP fájl használatával lehetségesek.
Ha egy képet más szögbe szeretne elforgatni, nem kell újra letöltenie – a kiválasztott fájl képét forgatja el, nem pedig a Ebben a pillanatban az ablakban.

A négymagos, 2,67 GHz-es processzorral rendelkező gépen egy 1024 x 768-as méretű képet ez a program tetszőleges szögben elforgat, átlagosan körülbelül 0,5 másodperc alatt. Egy kép 4000 x 4000 méretű - körülbelül 10 másodperc alatt. Az algoritmus futási ideje a különböző szögeknél eltérhet attól a ténytől, hogy a kép különböző szögekből szétválik különböző mennyiségben„töredékek”, amelyek területeinek kiszámítása összesen ennek megfelelően eltérő időt vesz igénybe.

A végső képpontok színéről lebegőpontos formátumban információt tartalmazó közbülső tömb a kiterjesztett típuson (10 bájt) van megvalósítva, így a nagy (kb. 5000 x 5000 pixelnél nagyobb) képek feldolgozása memóriatúlcsordulási hibát okozhat. Javítani lehet a helyzeten, ha kevésbé pontos adattípust használunk, és a szám egész részét közvetlenül a végső bittérképbe mentjük, és csak a tört részt hagyjuk a segédtömbben.

eredmények

Végezzük el a Photoshopban megvalósított precíziós algoritmus és képforgató algoritmus működésének összehasonlító elemzését.

1. teszt

Az első teszthez egy nagyon egyszerű képet készítettem - egy 1 pixel vastag és 10 pixel hosszú vízszintes fekete vonalat, eltolva egy 100 x 100 pixel méretű fehér négyzet közepétől:

Ezután ezt a képet elforgattam a geometriai középponthoz képest 3°-kal az óramutató járásával megegyezően. Itt összehasonlító eredmény(24-szeresére nőtt):

Precíziós algoritmus

Photoshop CS6 (64 bites)
Nyilvánvaló, hogy a Photoshop algoritmus bizonyos torzításokat visz be a képbe. Mellékesen megjegyezzük, hogy a Photoshopban megvalósított forgatási algoritmus 10 év alatt semmilyen észrevehető változáson nem ment keresztül.

2. teszt

A második teszthez a szabványos Win7 disztribúcióból a Tulipot választottam:

A kanyar után erről a képről A geometriai középponthoz képest az óramutató járásával megegyező 5°-ban összesítettem az összes pixel színét RGB csatornák szerint. Íme a precíziós algoritmus és a Photoshop algoritmus eredménye:

A zárójelben lévő számok ennek a mutatónak az eredetitől való abszolút eltérését mutatják.
A kép színe precíziós elforgatás után és kerekítés előtt gyakorlatilag nem változott - ami várható volt.
A legnagyobb eltérés ebben konkrét eset, a G csatornából észleljük a Photoshop algoritmushoz. Százalékosan ez az eltérés csak 0,06%, tehát „szemmel” nem észrevehető, de a Photoshop eredménye perfekcionizmus okán rosszabb, mint egy precíziós algoritmusé.
Fontos megjegyezni, hogy a precíziós algoritmusban az egyes pixelek színének a BMP formátum által megkövetelt egész értékre kerekítése visszafordíthatatlanul megsemmisíti a színinformációk egy részét.

A két algoritmus vizuális összehasonlításához adok egy nagyított képrészletet,

5°-kal elforgatva az óramutató járásával megegyezően, Photoshop:

és egy precíziós algoritmus:

Az összehasonlító elemzés azt mutatja, hogy a Photoshop jobban képes megőrizni a kép kontrasztos elemeit, ugyanakkor torz színű „glóriákat” hoz létre. A precíziós algoritmus nem torzítja a színt, ugyanakkor valamelyest „elmosódik” a képen.

következtetéseket

1. Egy raszteres kép tetszőleges szögben történő pontos és egyben viszonylag gyors elforgatása lehetséges. Továbbra is rejtély számomra, hogy a professzionális grafikus szerkesztőknek miért nincs olyan lehetőségük, amely lehetővé teszi a felhasználó számára, hogy egy kicsit több idő alatt rendkívüli pontossággal elforgathassa a képet.

2. A figyelembe vett algoritmus rendkívüli pontossága ellenére, inverz konverzió képek, azaz fordulnak szemközti sarok minőségromlás nélkül – a kerekítés miatt lehetetlen pontos érték szín (lebegőpontos formátumban) visszafordíthatatlanul tönkreteszi a színinformációk egy részét.

3. A kontrasztos részletek vizuális észlelése szempontjából legjobb eredmény szuboptimális algoritmust ad. Célszerű precíziós algoritmust használni azokban az esetekben, amikor fontos a maximális információ megőrzése a kép színéről.


BEVEZETÉS A PROBLÉMA MEGFOGALMAZÁSA.

1. A KÉPFORGATÁS ALGORITMUS LEÍRÁSA

2. ALKALMAZÁSFEJLESZTÉS C# PROGRAMOZÁSI NYELVEN

2.1 Az alkalmazás leírása

2.2 Az alkalmazás tesztelése

KÖVETKEZTETÉS

A HASZNÁLT FORRÁSOK LISTÁJA

A FÜGGELÉK

BEVEZETÉS A PROBLÉMA MEGFOGALMAZÁSA

A „Képek beszerzése és feldolgozása” diszciplína tanulmányozásának részeként, tesztként, feladatul tűzték ki az algoritmus leírását és a kép középpont körüli elforgatásának funkcióját a felhasználó által megadott szögben. Számítsd ki egyszer egy szög koszinuszát és szinuszát! Állítsa be tetszőlegesen az összes kezdeti paramétert, és ellenőrizze, hogy megfelel-e az elfogadható értékek tartományának.

1 . A képforgató algoritmus leírása

A kép fokban megadott szöggel történő elforgatásához használja a privát Bitmap RotateImage(Bitmap Image, int angle) funkciót.

Bemeneti paraméterek:

Bitmap kép – elforgatandó kép;

int szög - forgásszög fokban.

A függvény egy adott szöggel elforgatott képet ad vissza.

Függvény algoritmus:

1) A bemenet a kép és az elforgatási szög fokban;

2) Számítsa ki az elforgatási szög szinuszát és koszinuszát (egyszer). Az elforgatási szög radiánban van megadva;

3) Számítsa ki a kép új szélességét és magasságát a forgatási szög számított szinuszával és koszinuszával;

4) Egy paralelogrammát definiáló Point lőtér struktúrák tömbjének inicializálása (Point pontok = új pont).

5) A koordináták kiszámítása a forgásszögtől függően (radiánban melyik negyedben van). három pontúj képet alkotni. A koordináták kiszámítása a (3) pont alapján történik. ennek az algoritmusnak(új szélesség és magasság - a pontok X és Y koordinátáinak újraszámítása);

6) Elforgatott kép rajzolása három pont segítségével (bal felső, jobb felső és bal felső). alsó sarkok paralelogramma. A negyedik pontot az első háromból extrapoláljuk).

g.DrawImage(Kép,pontok); - rajz funkció.

7) Állítsa vissza az elforgatott képet a funkción kívüli használatra.

A kép központosítását a pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage elemtulajdonság végzi;

2 . ALKALMAZÁSFEJLESZTÉS C# PROGRAMOZÁSI NYELVEN

A képfeldolgozó alkalmazás fejlesztői eszközeként az MS Visual Studio 2012-t választották programozási nyelvnek. Ez az eszközkészlet elegendő lehetőséget biztosít a grafikával való munkához.

A feladatnak megfelelően alkalmazás készült.

2. 1 Alkalmazás leírása

képszögtartomány elforgatása

Az alkalmazás az frmRotationForm osztályon alapul.

Ez az osztály a következő metódusokat valósítja meg:

A privát void btnRotateImage_Click(object sender, EventArgs e) metódus kezeli a „kép elforgatása” gombra kattintást. Kattintás után a szövegmező tartalmát megkísérlik számmá alakítani (későbbi használatra ang változóként, amely az elforgatási szög fokban való tárolására szolgál). be is ez a módszer A kivételek feldolgozásra kerülnek, és elindul a RotateImage funkció, amely elforgatja a képet.

A privát Bitmap RotateImage(Bitmap Image, int angle) módszer egy adott szöggel elforgatja a képet. Elforgatott képet ad vissza.

A private void btnLoadImage_Click(object sender, EventArgs e) metódus betölt egy képet a lemezről egy PictureBoxba az eredeti képpel együtt.

A privát void timer1_Tick(object sender, EventArgs e) metódus végrehajtásra kerül minden egyes időzítő tick esetén. Ebben az alkalmazásban a frekvencia 50 ezredmásodpercre van állítva (az animációs módban a simább működés érdekében).

2. 2 Alkalmazás tesztelése

A kifejlesztett alkalmazást a környezetben teszteltük Microsoft Windows 7 64 bites, telepített .NET-keretrendszer 4.5. Az Image_Rotation.exe futtatható fájl elindításának eredménye a 2.1. ábrán látható.

2.1. ábra – Alkalmazásablak indításkor

Amikor elindítom az alkalmazást, a kiválasztott alapértelmezett kép „vezetékes”. A „Kép feltöltése” gombra kattintva módosíthatja. A saját képválasztás eredményét a 2.2. ábra mutatja be.

2.2 ábra - Saját kép kiválasztása elforgatáshoz

A további műveleteket az alapértelmezett kép tárgyalja. Miután kiválasztotta az elforgatási szöget a megfelelő szövegmezőben az űrlap bal felső sarkában, kattintson a „Kép elforgatása” gombra. (lásd 2.3. ábra).

2.3 ábra - A kép 8 fokkal történő elforgatásának eredménye

Az ábrán leírt téglalapok segédeszközként szolgálnak, a saját kényelme érdekében jelennek meg, és a kép közepét mutatják.

Az alkalmazás „bolondvédelmet” valósít meg, nevezetesen: ha 360 foknál nagyobb vagy -360 foknál kisebb szöget, valamint szöveget próbál beírni, figyelmeztetés jelenik meg, és a kép nem kerül feldolgozásra:

2.4 ábra - Kísérlet a kép elforgatására -361 fokkal

Az alkalmazás megvalósítja az „animált forgatást” az óramutató járásával megegyezően/ellentétesen, valamint a „nagyítást” (a kép kinagyítását, hogy illeszkedjen a PictureBox tárolóhoz).

2.5 ábra - Animált forgatás

KÖVETKEZTETÉS

A műszaki leírásban meghatározott feladat a próba munka, megvalósítva.

Képfeldolgozási technikákat tanult C# programozási nyelv használatával.

Az alkalmazás forráskódja az A függelékben található.

A HASZNÁLT FORRÁSOK LISTÁJA

1 Starovoitov V.V. Digitális képek: a beszerzéstől a

feldolgozás / V.V. Starovoitov, Yu.I. Golub - Minszk: OIPI NAS of Belarus, 2014. - 202 p. - ISBN 978-985-6744-80-1.

2 Christian Nagel, Bill Ivien és mások C# 2008 és a .NET 3.5 platform szakembereknek - Professional C# 2008. - M.: Dialektika, 2008. - ISBN 978-5-8459-1458-3.

3 Alkalmazásfejlesztés Microsoft platformon. MSDN [ Elektronikus forrás]: http://msdn.microsoft.com/ru-ru/library/4f9s3at1(v=vs.110).aspx. - Hozzáférés időpontja: 2014.10.25.

A FÜGGELÉK

Az "frmRotationForm" osztály listája

a System.Collections.Generic használatával;

a System.ComponentModel használatával;

a System.Data használatával;

a System.Drawing használatával;

a System.Linq;

a System.Text használatával;

a System.Threading.Tasks használatával;

a System.Windows.Forms használatával;

a System.Drawing.Drawing2D használatával;

névtér Image_Rotation

nyilvános részleges osztály frmRotationForm: Form

privát int jj;//szög fokban

public frmRotationForm()

InitializeComponent();

w.Text = pictureBox3.Image.Width.ToString();

h.Text = pictureBox3.Image.Height.ToString();

jj = Convert.ToInt32(textBox1.Text);

private void btnRotateImage_Click(objektum küldő, EventArgs e)

ang = Convert.ToInt32(textBox1.Text);

ha (ang< -360 || ang > 360)

fogás (kivétel kivétel)

MessageBox.Show("0 és 360 közötti szögek megengedettek. \nA \"-\" jel az óramutató járásával ellentétes irányban foroghat.");

Bitmap i = new Bitmap(pictureBox1.Image);

pictureBox1.Image = this.RotateImage(i, ang);

//this.Controls.Add(pictureBox1);

privát Bitmap RotateImage (Bitmap kép, belső szög)

var pi2 = Math.PI/2;//PI kettővel

int oldWidth = Kép.Szélesség;

int oldHeight = Kép.Magasság;

var theta = szög * Math.PI / 180.0;//átváltás radiánra

var locked_theta = théta;

if (zárt_théta< 0.0) locked_theta += 2 * Math.PI;

double newWidth, newHeigth;

int nWidth, nHeight;

double szomszédosFelső, ellentétesTop;

double szomszédosBottom, againstBottom;

#region Új szélesség és magasság kiszámítása

double SINUS = Math.Abs(Math.Sin(locked_theta));

double COSINUS = Math.Abs(Math.Cos(locked_theta));

if ((zárolt_théta >= 0,0 && zárolt_théta< pi2) || (locked_theta >= Math.PI && locked_theta< (Math.PI + pi2)))

(// Szög (>= 0 és< Pi/2) или (>= PI és< ПИ + Пи/2)

szomszédosTop = COSINUS * oldWidth;

szembenTop = SINUS * oldWidth;

szomszédosBottom = COSINUS * oldHigth;

EllenkezőBottom = SINUS * oldHigth;

szomszédosTop = SINUS * oldHigth;

szembenTop = COSINUS * oldHigth;

szomszédosBottom = SINUS * oldWidth;

EllenkezőBottom = COSINUS * oldWidth;

newWidth = szomszédosFelső + ellentétesBottom;

newMagasság = szomszédosBottom + ellentétesTop;

nWidth = (int)(Math.Ceiling(newWidth));//kerekítés egész számokra

nMagasság = (int)(Math.Ceiling(newHeigth));

#endregion Új szélesség és magasság kiszámítása

Bitmap rotatedBmp = new Bitmap(nWidth,nMagasság);

Grafika g = Graphics.FromImage(rotatedBmp);

Pontpontok = új Pont ;//3 pont típusú szerkezetből álló tömb, amely egy paralelogrammát határoz meg

//Három pont jelöli: a paralelogramma bal felső, jobb felső, bal alsó sarkait.

//A negyedik pontot az első háromból extrapoláljuk

//referenciapont (0,0) - bal felső sarok

if (zárolt_théta >= 0,0 && zárolt_théta< pi2) //90

pontok = new Pont((int)ellenkezőBottom, 0);

else if (locked_theta >= pi2 && locked_theta< Math.PI) //90-180

pontok = new Pont(nSzélesség, (int)(OpositeTop));

else if (locked_theta >= Math.PI && locked_theta< (Math.PI + pi2))//180-270

pontok = new Pont((int)(szomszédosFelső), nMagasság);

pontok = new Point(0, (int)(adjacentBottom));

pontok = new Pont(nSzélesség, (int)(OpositeTop));

pontok = new Point(0, (int)(adjacentBottom));

pontok = new Pont((int)(alul szemben), 0);

pontok = new Pont((int)(szomszédosFelső), nMagasság);

label6.Text = "Középen EREDETI x="+ (oldWidth / 2.0f).ToString() + ", y=" + (oldMagasság / 2.0f).ToString();

label7.Text = "Center ROTATE x=" + (nWidth / 2.0f).ToString() + ", y=" + (nMagasság / 2.0f).ToString();

g.DrawImage(Kép,pontok);

g.DrawRectangle(new Pen(Color.Red, 0.1f),new Rectangle(0,0,nWidth/2,nHeigth/2));

g.DrawRectangle(new Pen(Color.Red, 0.1f), new Rectangle(nWidth/2, nHeigth/2, nWidth/2-1, nHeigth/2-1));

Image.Dispose();

return rotatedBmp;

private void btnLoadImage_Click(objektum küldő, EventArgs e)

OpenFileDialog dlg = new OpenFileDialog();

dlg.Title = "Kép megnyitása";!}

dlg.Filter = "jpg fájlok (*.jpg)|*.jpg|Minden fájl (*.*)|*.*";

if (dlg.ShowDialog() == DialogResult.OK)

pictureBox3.Image = new Bitmap(dlg.OpenFile());

pictureBox1.Image = pictureBox3.Image;

w.Text = pictureBox1.Image.Width.ToString();

h.Text = pictureBox1.Image.Height.ToString();

private void timer1_Tick(objektum feladó, EventArgs e)

ha (2. jelölőnégyzet. Bejelölve)

(//módosítsa a pkcherbox módot ZOOM-ra

pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

//ha nincs bejelölve, a kép középre kerül

pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;

ha (1. jelölőnégyzet. Bejelölve)

(//az „animáció” megvalósítása - a kép forgatása a tengelye körül az óramutató járásával megegyező/ellentétesen

radioButton1.Visible = igaz;

radioButton2.Visible = igaz;

if (radioButton1.Checked)

( //az óramutató járásával megegyezően

this.textBox1.Text = jj++.ToString();

ha (jj == 360) jj = 0;

(//óramutató járásával ellentétes irányban

this.btnRotateImage_Click(this, e);

this.textBox1.Text = jj--.ToString();

ha (jj == 0) jj = 359;

radioButton1.Visible = false;

radioButton2.Visible = false;

Hasonló dokumentumok

    Képzaj szűrés. Algoritmusok binarizálására és forgatására. Informatív jellemzők kialakítása a hangjegyfelismeréshez. Rendszer szoftver. A programban megvalósított osztályok, függvények, metódusok leírása. Alkalmazás tesztelése.

    tanfolyami munka, hozzáadva 2013.12.17

    Információk a grafikus formátumokról. Kép tárolása a programban. Sor mint segédadatstruktúra. Kép betöltése bináris fájlból. Műveletek képekkel. Felbontás csökkenése. Növelje a kép méretét.

    tanfolyami munka, hozzáadva 2013.06.29

    Féltónusos kép tömörítésére vagy tömörítésére tervezett program fejlesztése a nemzetközi JPEG szabvány segítségével. A JPEG módszer leírása, az eredmények kiírása dekódolt kép formájában. Féltónusos képtömörítési módszerek áttekintése.

    tanfolyami munka, hozzáadva 2012.10.14

    Általános algoritmus két kép összehasonlítása. Maximális terület módszer. Hisztogram módszer. Kép előkészítése felismerésre. Többváltozós függvény modellezése. Vektoros eloszlás. Deformálható modellek. Szoftver implementáció.

    szakdolgozat, hozzáadva 2008.09.29

    A "Micimackó" rajzfilmfigura animált GIF-képének létrehozásának szakaszainak leírása a programban Adobe Photoshop CS6. Duplikált képréteg létrehozása és keretek előkészítése GIF-animációhoz. Az animációs effektusok testreszabása és a GIF-fájl eredménye.

    labormunka, hozzáadva 2015.03.05

    Olyan alkalmazás fejlesztése, amelynek célja a fekete-fehér féltónusos képek színesekké alakítása. Képfeldolgozási technikák, képátalakítási módszerek áttekintése neurális hálózat. A színtér klaszterezés leírásai.

    szakdolgozat, hozzáadva: 2012.06.17

    Mozgási paraméterek meghatározása forgómozgás közben, a sebesség, a gyorsulás, az idő forgásszögtől való függése, a forgási idő beállítása egy bizonyos szögbe. Alkalmazása az épített matematikai modell a test mozgási paramétereinek kiszámításához.

    tanfolyami munka, hozzáadva 2010.03.18

    Számítógépes grafika. Pixel, felbontás, képméret. A képek típusai. Fekete-fehér vonal és féltónusú képek. Indexelt színek. Teljes színű képek. Fájlformátumok. Szín és modelljei. Színes modellek: RGB, CMYK, HSB.

    absztrakt, hozzáadva: 2009.02.20

    Képkódolási módszerek: futáshosszúságú kódolás, frekvenciafüggő kódolás, Lempel-Ziv módszer. Vonalméret 16 bites színnel. Számítsa ki a teljes eredeti kép méretét. Példák jó minőségű és gyenge minőségű képtömörítésre.

    bemutató, hozzáadva 2013.10.22

    Adobe Photoshop program felület. A kép módosítása. Eszközök az árnyalat megváltoztatásához és a képek torzításához. A képalkotás sorrendje. Képek tónus- és színkorrekciója, munka szűrőkkel és funkciókkal.

Sarok fordulat azt az alapvető fizikai mennyiséget jelenti, amely egy test vagy sugár mozgását jellemzi, amelyben az egyik pontja mozdulatlan marad. Ennek megfelelően ez a szög pontosan egy fix ponthoz képest van meghatározva. Ennek a mennyiségnek megvan a maga mértékegysége és mérete.

Utasítás

BAN BEN modern fizika Az elforgatási szöget, mint fizikai mennyiséget síkszög egységeiben becsüljük meg. Egy síkszög értékének meghatározása céljából? használja a matematikában elfogadott egyenleteket. Ebben az összefüggésben az alábbi két lehetőség egyikét alkalmazhatja: ? = s/RItt s a körív hosszát jelöli, R pedig a kör sugarának hosszát.

A második csatlakozásnál az egyik félhéj mereven kapcsolódik a hüvelyhez. A laprugók rugalmassága miatt a két persely immár sugárirányban is el tud forogni egymáshoz képest. Háromrészes csatlakozás esetén az egyik hüvely ismét ketté van osztva, és ezért egy félhéjra kerül, amelyben középen található az osztatlan hüvely. Ez a kialakítás stabilabb, de két külső tartóblokkot igényel. középső része szabadon mozoghat a külső keskeny karokhoz képest a megfelelő forgási szög területén.

A második módszer az inverz trigonometrikus függvényegyenlet használata, ami így néz ki a következő módon: ? = arctan (a/b), ahol b és a nem más, mint egy derékszögű háromszög szárainak megfelelő hossza.

A forgásszög matematikai feltételekkel történő becslésekor a fizikában egy finom helyettesítés történik, de ennek a megközelítésnek vannak bizonyos következményei. A helyzet az, hogy amikor egy forgó test elfordulási szögét próbáljuk megbecsülni, a gyakorlatban kiértékeli a test bármely pontja által egy körív mentén megtett utat, ami egy fizikai mennyiség helyettesítése egy másikkal, nevezetesen ebben a konkrét esetben a forgó mozgásformát orbitális váltja fel.

Mint említettük, a keresztirányú rugós csatlakozás egy hengeres csapágy forgó mozgások korlátozott elforgatási szöggel. A radiális és axiális irányban ható erőkkel szembeni merevség viszonylag nagy. 10 különböző méret torziós merevsége három rugóvastagsággal választható a ±15°, ±7,5° és ±3,7° elfordulási szögek szerint. részletes információk a rendelkezésre álló sorozatokról a megfelelő áttekintés tartalmazza.

Újra és újra irritációk merülnek fel a forgásszöggel kapcsolatban. Míg korábban a névleges elforgatási szög 30°, 15° és 7,5° volt, addig most 15°, 7,5° és 3,7°. A geometria és a rugók nem változtak, csak értelemszerűen. Ha korábban a lehető legnagyobb elfordulási szögből ment, ma inkább a végtelen várható élettartam szögéről beszélünk.

A modern fizikában a forgásszög mértékegysége „rad”. Még mindig meglehetősen nehéz vitatottabb témát találni, mint az, hogy a forgásszög dimenzió nélküli vagy dimenziós, derivált vagy alapvető mennyiség a modern fizikában.

De még mindig vannak kérdések, a főbbek a következők: miért nincs a fizikában olyan egyenlet, amely az alapelv alapján meghatározná a forgásszöget? fizikai mennyiségek, ha származtatott fizikai mennyiségről van szó, miért van a forgásszögnek saját mértékegysége SI-ben, ha általában dimenzió nélküli mennyiségnek tekintik.

Általában a keresztkötések rugalmassága, rugóállandója és élettartama független a feltételektől környezet. A szennyeződés és a por nem befolyásolja ésszerű határokon belül a csatlakozást, kivéve, ha kémiailag agresszív anyagokról van szó. Nagy mennyiség a por természetesen megakadhat az ízületben, és megzavarhatja annak mozgását. A szélsőséges hőmérséklet befolyásolhatja az élettartamot, különösen akkor, ha a hő és a páratartalom együttesen korróziót okoz. Az ilyen alkalmazásoknál speciális fugaanyagot vagy felületvédelmet kell választani.

A szakaszos hűtés és fűtés ezen a területen nem befolyásolja hátrányosan a működést. A statikus erők általi stabilitás az erővektornak a laprugókhoz viszonyított irányától függ. A 2. ábra a koponyaízületre kifejthető erők fajtáit mutatja be.


Figyelem, csak MA!

Minden érdekes

A görbe vonal definíciója szerint be analitikus geometria egy bizonyos ponthalmazt képvisel. Ha bármely ilyen pontpárt egy szakasz köt össze, akkor azt akkordnak nevezhetjük. A legmagasabbon túl oktatási intézmények leggyakrabban úgy gondolják...

Ha bármelyik körbe két divergens sugarat rajzol, abban két központi szöget jelez. Ezek a szögek rendre két ívet határoznak meg a körön. Minden ívet viszont két húr, két körszakasz és két szektor határoz meg. Méretek…

Az elfordulási szöget a kötés nulla helyzetétől mérjük. A csavar mindkét oldalon vagy az egyik oldalon felfelé feküdhet nulla pont. A kormányszög közvetlenül befolyásolja a laprugók anyagfeszültségét. Minden csapágynál vagy hajlékony csuklónál általában a legtöbb a várható élettartam fontos tulajdon. Ezt a laprugók anyagának a terhelés és a kormányszög következtében fellépő feszültsége határozza meg. A 3. ábra a terhelés, az elfordulási szög és az élettartam közötti tipikus összefüggést mutatja.

A következő jellemzőkkel rendelkezik eltérő jelentése az alkalmazástól függően. Ezenkívül kevésbé hatnak magára az X-csuklóra, mint arra az eszközre, amelybe a csatlakozást telepítették. A laprugók visszaállítási nyomatékát osztva a forgásszöggel rugóállandónak nevezzük. Mérhetők statikusan vagy dinamikusan. Befolyásolja azt a rezonanciafrekvenciát, amelyen a keresztrugós csatlakozás szabad végére tapadt tömeg rezeg.

A "szög" szónak különböző értelmezései vannak. A geometriában a szög egy sík része, amelyet egy pontból - a csúcsból - származó két sugár határol. Amikor arról beszélünk egyenes, hegyes, kibontott szögekről, akkor ezek pontosan azt jelentik...

Egy sík háromszög az euklideszi geometriában három szögből áll, amelyeket az oldalai alkotnak. Ezeknek a szögeknek a nagysága többféleképpen is kiszámítható. Tekintettel arra, hogy a háromszög az egyik legegyszerűbb ábra, léteznek egyszerű számítási képletek...

A rugóállandó a kötésre ható erők nagyságától és irányától függ. A rugóállandó növekszik a függőleges terhelés növekedésével, miközben a rugók nyomás alatt vannak. Másrészt a rugóállandó csökken a függőleges terhelés növekedésével, amikor a rugók feszültségnek vannak kitéve. Ez a jelenség néha különösen alacsony önrezonancia elérésére használható.

A csatlakozást ezután úgy alakítják ki, hogy a sugárirányú erők erősítsék a rugókat a nyújtás irányában, így a rugóállandó csökken. 4. ábra: Rugóállandó a radiális terhelés függvényében. Ebben a terhelési tartományban a keresztkötések használata nem javasolt, mivel a laprugók elhajolhatnak.

A testek összetett pálya mentén történő mozgásának leírására, beleértve a kört is, a kinematikában a szögsebesség fogalmát, szöggyorsulás. A gyorsulás jellemzi a változást szögsebesség testek időben. Számos filmben...

Az ív egy zárt görbe része, amely kört alkot. Ha egy kör középpontjából olyan szöget szerkesztünk, amelynek sugarai a kört az ív végeivel egybeeső pontokban metszik, akkor ezt a szöget tekintjük központi szögívek. ...

A vízszintes terhelés a rugóállandót is megváltoztatja, így a 4. ábra görbéi balra lefelé mozognak. A 10-es csatlakozásoknak van a legvékonyabb rugójuk, ezért egy méretnél a legkisebb rugóállandójuk. A 20-as csatlakozásoknak közepes a rugója, és ezért nagyobb a rugóállandója, míg a 30-as csatlakozásoknak a legerősebb rugók és mindegyik azonos méretű rugóállandója van.

A rugóállandó szinte állandó marad a körkörös mozgás során. A persely konfigurációja nincs hatással a rugóállandóra. A rugóállandót jellemzően 10%-os tűréshatárral adják meg. A linearitás a keresztrugós csatlakozás geometriájának köszönhető. Egy teljesen lineáris kapcsolatnak teljesen lineárisan kellene növelnie a nyomatékot a kormányszög felett. A gyakorlatban a nemlineáris viselkedés csak a névleges elfordulási szögnél nagyobb elfordulási szögeknél látható.

KETTŐS TÁMASZTÁSÚ GERENDA SZAKSZÖG ALAKÍRÁSÁNAK ÉS FORGÁSSZÖGÉNEK MEGHATÁROZÁSA KÖZVETLEN HAJLÍTÁSBAN

A munka célja: meghatározni empirikusan a gerenda szakasz elhajlás mértékét és elfordulási szögét, és hasonlítsa össze az elméleti számításokkal kapott értékekkel.

RÖVID ELMÉLETI TÁJÉKOZTATÓ

Külső erők hatására a gerenda úgy deformálódik, hogy a hossztengelye elhajlik. A gerenda ívelt tengelyét rugalmas vonalnak nevezzük. A gerendák keresztmetszeteinek mozgását hajlítás közben két mennyiség jellemzi: az elhajlás Yés forgási szög .

A központi elmozdulás a pillanatnyi forgástengely térbeli elmozdulása. Az elmozdulás mértéke magának a kötésnek a geometriájától és a külső sugárirányú erők hatásától függ. Az eltolás nagyon kicsi, ezért általában elhanyagolható. ábrán. 7. ábra: Középpont elmozdulása az elforgatási szög függvényében.

A hiszterézis a nullapont elmozdulása a rugó anyagának rugalmas hatása miatt a csatlakozás pozitív vagy negatív csavarása után. Az előző pozitív és a negatív elforgatás utáni nulla pozíció közötti különbség a hiszterézis szöge.

Az alábbiakban néhány gerenda rögzítési és terhelési séma alakváltozási értékei találhatók. Az elhajlások és elfordulási szögek elméleti értéke bármilyen ismert módszerrel meghatározható.

1. séma. Két támaszon lévő, középen koncentrált erővel terhelt gerendát egy t.S.

Elhajlás a t.C. pontban

Elfordulási szögek a támasztékokon az A és B pontokban

Nagyságrendileg több ezer korábbi fordulat. A tipikus mért értékeket a következő 9-9. 9. ábra ±3,7° névleges elforgatási szögű keresztkötések hiszterézisgörbéi 11. ábra ±15° névleges elfordulási szögű keresztkötések hiszterézisgörbéi 10. ábra ±7,5° névleges elfordulási szögű keresztkötések hiszterézisgörbéi.

A keresztirányú tekercsrugók konfigurációjától függően a rugók különböző terheléseknek vannak kitéve. Az alábbiakban néhány Konstruktív döntések normál változat keresztkötéseinek beépítéséhez. Rezgés esetén a szokásos csavaros rögzítési módok valamelyikét javasolt alkalmazni. A feszültség csökkenthető, ha a szorítócsavarral szemben egy lyukkal ellátott nyílást készítünk, amint azt a szaggatott vonal mutatja.

2. séma. Gerenda két támasztékon, két koncentrált erővel terhelve.

Elhajlás a C vagy D pontban

Elfordulási szög a támaszokon

Ez az elrendezés kis nyomatékú alkalmazásokhoz választható. A szorítóerőnek elég nagynak kell lennie ahhoz, hogy elkerülje a csavarodást a furatban. A hézagnak a furatba való könnyebb behelyezése érdekében a rést egymástól bizonyos távolságra kell elhelyezni. Ügyelni kell arra, hogy a rugalmassági határt ne lépjük túl.

Beszerelés rögzítőcsappal radiális elrendezésben

Ebben az eszközben a rögzítés menetes csap segítségével történik. A keresztvarrat deformációjának elkerülése érdekében ajánlatos óvatosan meghúzni a csavart. A csavart rögzíteni kell, ha vibráció lép fel. Fúrás és csepegtetés összeszerelés után. A rugókat a feldolgozás során nem szabad megérinteni.

Z,4. Két támaszon lévő gerenda konzollal, a konzol végén koncentrált erővel terhelve.

Elhajlás a konzol végén

Elhajlás a fesztáv közepén

Forgási szög az A pontban

Beszerelés rögzítőcsappal kereszt- és axiális irányban

Préselés után hajlítsa meg a vezetőhüvellyel, majd rögzítse. Kerülje el a hézag belső falának sérülését a fúrás során. A rögzítéshez nyomást vagy csapokat használnak. Ha az ízületet „szárazjégbe” merítjük, a zsugorodás károsodás nélkül indukálható. A megfelelő tartórész felmelegíthető a lyuk kiszélesítése érdekében. Az összeszerelés közbeni sérülések elkerülése érdekében kérjük speciális szerszám, ahogy a képen is látszik. Normál négyzethálóval vagy háromszöghálóval dolgozunk.

15. ábra. Gerendaterhelési sémák

Elfordulási szög a támasznál t.A

;

Elfogadott szimbólumok a képletekben:

Y- elhajlás (a keresztmetszet súlypontjának elmozdulása a gerenda tengelyére merőleges irányban);

Négyzetháló és háromszögháló. Erre a hálóra affin leképezés kerül alkalmazásra. A képernyő rács és a rács egymásra fedik. Egy kis fordítás árnyékhoz vezet. Enyhe forgás jelenik meg. Bemutatunk egy prototípus rácsot és rácsokat párhuzamos, függőleges síkban. Ha bizonyos távolságból nézzük, a perspektíva eredményeként új mintát ismerünk fel. A következő képeken négyszerezve vagyunk nagyobb távolság két sík között az elülső sík előtt. Megfelelő frontális pontok.

A pontok jól láthatóak. A kék és a piros átfedése magenta színt eredményez. Felismerjük négyzetrácsés átfedő pontokból álló háromszögháló. A 45°-os elforgatásnál nincs pontos átfedés a két rácspont között a forgás középpontján kívül, pedig valahogy így néz ki. Ez azért van, mert irracionális szám.

R- a gerendára kifejtett erő;

l - gerenda hossza;

E - 1. típusú rugalmassági modulus;

én - a gerenda keresztmetszetének tengelyirányú tehetetlenségi nyomatéka a semleges tengelyhez képest.

Berendezések és minták

A kéttámaszú gerenda hajlításának tanulmányozásakor az SM-4A telepítést használják.

Egy téglalap alakú gerenda (6  40) mm két csuklós tartóra van felszerelve.

További pontos átfedések érhetők el, ha egy szakaszt adunk hozzá egy olyan szorzóval, amely tartalmaz. A következő példa a nyújtási tényező. Látunk egy négyzethálót egy rátéttel, amelynek a rácsszélessége 3 az eredeti kék rácshoz képest. A piros rács alapján a rács átlós hossza most.

Forgatás alacsony nyújtással. Közvetlenül a nyújtási együtthatóval. Az analóg hatás egy háromszög alakú rács egy rácspont körüli 30°-os elforgatásával érhető el. Körbenyúlás esetén, pl. körülbelül 1%, vannak pontos off-center átfedések – hol vannak?

A mozgatható állvány lehetővé teszi a fesztáv 700 és 1000 mm közötti beállítását, valamint konzolos gerenda kialakítását.

A minta referenciaszelvényeinek elhajlásának és elfordulási szögeinek mérését 0,01 mm-es osztásértékű mérőórákkal kell elvégezni. Az elhajlások mérésére szolgáló mutatók jelzőállványokra vannak felszerelve, amelyek egy vezető mentén mozoghatnak a berendezés alapja mentén. Az állványt ütközővel rögzítik a vezetőhöz. Az elfordulási szögeket a gerendához rögzített karokkal mérik, amelyek a karok mozgását érzékelik.

Ez azonban már a nyújtási faktornál is így van – legyen az akármekkora is. Kaphatunk-e precíz rátéteket nyújtás nélkül is, pl. tiszta forgással? A következő ábra a forgási szöget mutatja. Felismerünk egy ferde négyzetes fedőrácsot, amelynek rácsszélessége és a vízszintessel ellentétes lejtése van.

Mindannyian ismerjük a derékszögű háromszöget a katéter hosszával és a hipotenusz hosszával. Az ilyen speciális derékszögű háromszögeket teljes hosszúságú katéterekkel és teljes hosszúságú hipotenuszokkal Pitagorasz-háromszögeknek nevezzük. A mi forgási szögünk azonban ennek a háromszögnek a szöge a katéter hosszával és a hipotenusz hosszával. Valójában egy ilyen háromszöget is elhelyezhetünk a hálónkban.

VIZSGÁLATI ELJÁRÁS

Mivel a szelvény elfordulási szögei a rugalmas alakváltozások során kicsik, elfogadjuk

, Akkor

vagy

De mivel csak forgatjuk és nem nyújtjuk, a háló szélessége mindkét hálóban azonos. Látjuk, hogy a kör és a háromszög köre is több rácsponton halad át. A piros háló forgatásával egy harmadik hálót is hozzáadhatunk. Ennek a zöld színű mintának a képe a következő képen látható.

Mindhárom rács pontos átfedése 5-ös rácsszélességű ferde négyzetrácsot alkot. Ez az új rács ferde. Így a derékszögű háromszög befogójának négyzete ennek az új raszternek a raszternégyzete. Természetesen ez is belefér a piros rácsba, hiszen van egy Pitagorasz-háromszögünk. A két lábnégyzet az eredeti kék rácsba illeszkedik.

ahol S a kijelző leolvasása, mm;

a - a kar hossza a minta semleges rétegétől a jelzőorsó tengelyéig mérve, mm (a=150mm);

 - a metszet elfordulási szöge, rad.

    A pontosabb eredmények elérése érdekében ismételje meg a tesztet háromszor. Az elhajlás és az elforgatási szög mértékét a mérések számtani átlagaként határozzuk meg.

    Írja be a teszteredményeket a táblázatba.

    Számítsa ki az elhajlások és az elfordulási szögek elméleti értékét a gerendaszakasz azonos terhelési feltételei mellett, amelyre a kísérleti méréseket végezték.

    Határozza meg a hibát elméleti számítások képletek szerint.



JELENTÉS ÖSSZEÁLLÍTÁSA

Az elvégzett munkáról szóló jegyzőkönyvnek tartalmaznia kell a beépítés vázlatát, a tervezési diagramot, az elhajlások és elfordulási szögek kísérleti meghatározásának eredményeit, az elhajlás és az elfordulás szögeinek elméleti számításait; kísérleti és elméleti eredmények összehasonlítása.

ELLENŐRZŐ KÉRDÉSEK

    Mekkora a gerenda rugalmas vonala?

    Milyen alakváltozások alakulnak ki a gerendák hajlítás közben?

    Számítsa ki a gerendák maximális elhajlását az 1., 2., 3. sémához.

    Ugyanezen gerendasémák esetén számítsa ki a támasztékok elfordulási szögeit.

    Hányszor változik meg a gerenda kihajlása, ha a terhelést felére csökkentjük?

    A gerendák acélból és öntöttvasból készülnek, azonos méretűek, és ugyanazok az erők vannak kitéve, melyik gerendának lesz nagyobb az elhajlása?

    Milyen pontossággal lehet mérni az elhajlást indikátor segítségével?

Asztal 1

Az elhajlás definíciója

A forgásszög meghatározása

Az elhajlásjelző leolvasásai, mm

Tapasztalt elhajlás, mm

Elméleti kitérés, mm

Relatív hiba

Az elfordulási szögjelző jelzése, m

Tapasztalt elforgatási szög,  op

Elméleti elforgatási szög,  t

Relatív hiba



Ahol P 0 az előterhelés, ami a mutató nulla értékének felel meg.

P 1, P 2, P 3 – azonos terhelésnövekmény értékek.

Feliratkozás a hírekre

A raszteres képnek a kép geometriai középpontjához képest 90°-os szögben történő elforgatása triviális feladat, és minőségromlás nélkül megoldható az egyes pixelek koordinátáinak egyszerű átalakításával.

Az alábbiakban egy algoritmust vizsgálunk meg egy raszteres kép precíziós elforgatására egy tetszőleges középponthoz képest tetszőleges szögben minimális veszteséggel.

Hálás köszönetemet fejezem ki Vlagyiszlav Vlagyimirovics Harcsenkónak a nyújtott segítségért.

Algoritmus

A fenti ábrán látható, hogy a raszteres kép elforgatása után a végső kép egyes pixeleinek színét úgy határozzuk meg, hogy az eredeti kép több pixeléből több „töredék” színét összeadjuk a megfelelő kép területeivel arányosan. „töredékek”. Ezért általánosságban a probléma megoldása az lesz, hogy az eredeti kép minden pixeléhez megkeressük az összes „töredék” területét, és a végső kép minden egyes pixelének színét összegyűjtjük a megfelelő „töredékek” színeiből.

Az eredeti kép pixelmodelljeként egy négyzetet használunk, amelynek oldala = 1, a sarkokra a következő jelölésekkel:
i1 - jobb szélső sarok;
i2 - legalacsonyabb sarok;
i3 - bal szélső sarok;
i4 a legfelső sarok.

A végső képmodell párhuzamos vízszintes és függőleges vonalakból álló rács lesz, a vonalak távolsága = 1.

A raszteres kép forgásközéppontjának koordinátái ebben az ábrázolásban tetszőleges valós számok párjaként fejezhetők ki. Ez azt jelenti, hogy feladatunkban a forgás középpontja nem a pixel geometriai középpontjában és nem a rácsvonalak metszéspontjában lehet, hanem egy tetszőleges pontban a derékszögű koordinátákban.

Mivel a raszteres kép elforgatásakor minden képpont négyzete azonos szöggel (az adott pixel közepéhez viszonyítva) elfordul, a feladatot egy pixelre oldjuk meg, majd a kapott megoldást alkalmazzuk az eredeti kép minden egyes pixelére. kép.

A bittérkép elforgatása két részre osztható:
1. Forgassa el az eredeti kép minden pixelének négyzetét a négyzet közepéhez képest egy adott szöggel.
2. A pixelnégyzet középpontjának eltolása a kép forgási szögének megfelelően a kép elforgatási középpontjához képest úgy, hogy a négyzet a végső kép rácsán véglegesen elfoglalja a helyét.
Ebben az esetben a végső kép rácsja az eredeti kép egyes pixeleinek négyzetét 4, 5 vagy 6 darab „szilánkokra” vágja.

Az eredményül kapott lehetőségek sokféleségének rendszerezéséhez taxonómiát kellett készítenem az eredeti kép pixelnégyzetének és a végső kép rácsának összes lehetséges metszéspontjáról. Csak 23 jelentősen eltérő lehetőség volt:


A konvenciók itt a következők:
- a cellákban lévő számok a képelforgatás után a végső képrács adott cellájába eső pixelnégyzet sarkainak számát jelölik;
- zöld szín jelzi azokat a cellákat, amelyekben a pixel részei estek, és garantáltan „szilánkot” hagynak ott;
- sárga jelzi azokat a cellákat, amelyekbe a körülményektől függően tud a pixel négyzet „töredékeit” találja el (vagy nem találja el), amelyeket nem a négyzet sarkai, hanem a négyzet oldalai alkotnak.

Az érthetőség kedvéért megadom a 3. lehetőség egyik lehetséges változatát:

Amint látható, a jobb felső cella nem tartalmaz egy pixel „töredékét”, bár más forgatási körülmények között előfordulhatna.
Annak érdekében, hogy ne terhelje az olvasót részletes geometriai számításokkal, azonnal elmondom, hogy mind a 23 lehetőségnél az eredeti kép pixelét „szilánkra” vágják, amelyek területe könnyen kiszámítható 4 képlet kombinálásával. . Alább láthatók ezek a képletek illusztrációkkal. A piros szín jelzi a végső kép azon rácsvonalait, amelyek átvágják a pixelnégyzetet. Az a terület, amelynek területét a képlet kiszámítja, sárga színű.

Forma-1
Ezt a képletet nem a „szilánk” végső területének kiszámítására használják, de kényelmesen használható a köztes segédterületek gyors kiszámításához, mivel tudjuk, hogy a teljes pixel területe = 1.
A négyzet sarkaiból a végső kép rácsára ejtett magasságok minden képletben bemeneti változóként szerepelnek azon egyszerű oknál fogva, hogy ezeknek a magasságoknak a kiszámítása a koordináta számértékének tört részének azonnali kiválasztásához vezet. a pixelnégyzet megfelelő sarkából.

Forma 2

Ezt a képletet csak az 1. és 2. lehetőség használja.

Forma 3
Gyakran használt képlet – az a jó, hogy gyorsan kiszámolható. Mivel az elforgatási szög minden pixelnél azonos, az összes trigonometrikus függvény egyszer, az összes pixel feldolgozása előtt kiszámítható, majd ezeket az értékeket konstansként használhatja a hurokban.

Forma 4
Ezt a képletet két lépésben számítják ki. Először a zárójelben lévő kifejezést értékeljük ki. Ha pozitív értéket vesz fel, akkor a terület kiszámításra kerül. Ha az érték negatív, az azt jelenti, hogy a rács sarka és a négyzet oldala által alkotott „szilánk” nincs levágva a pixelről, és nincs értelme további számításokat végezni.

A fentiek figyelembevételével az algoritmus általában így fog kinézni:
1. Töltse be az eredeti képet a számítógép memóriájába.
2. Számítsa ki a végső kép méreteit pixelben!
3. Hozzon létre egy köztes kétdimenziós tömböt, melynek minden eleme 3 lebegőpontos számformátumú RGB színkomponenst tartalmaz. A tömb méretei megegyeznek a végső kép méreteivel.
4. Sorban végigmegyünk a forráskép összes pixelén; mindegyiket elforgatjuk adott szöggel, és a képpont négyzet sarkainak 4 koordinátáját kiszámolva a végső kép rácsára helyezzük; a pixelt 23 opcióba soroljuk, és megszámoljuk a „töredékek” területeit; A kapott „szilánkok” színeit hozzáadjuk a közbenső tömb megfelelő elemeihez a „szilánkok” területének arányában.
5. Az eredeti kép összes pixelének feldolgozása után a közbülső tömbben lévő RGB értékeket minden elemhez egész értékre kerekítjük, és ezen egész értékek alapján létrehozzuk a végső képet BMP formátumban.

Program

A fenti algoritmus alapján készült egy program Windowshoz. Az Object Pascal forráskódja és a lefordított futtatható fájl letölthető.

Program interfész.
A „Megnyitás...” gombra kattintva megnyílik a BMP fájl kiválasztási párbeszédpanel. Csak a 24 bites palettával rendelkező bitképek támogatottak. A megnyitott kép egy ablakban jelenik meg. Az ablak címe megjeleníti a fájl teljes elérési útját és a kép méreteit.

A „Szög” mezőben adja meg az elforgatási szöget fokban – bármilyen pozitív szám.
Törtszámok beírásakor pont vagy vessző használható tizedeselválasztóként.

A „CW” és „CCW” rádiógombok állítják be a forgásirányt: „óramutató járásával megegyező”, illetve „balra”.

A „Háttérszín” blokkban beállíthatja azt a háttérszínt, amellyel a kép szegélypixelei keveredni fognak. Az alapértelmezett háttérszín a fekete.

Az „X középpont” és „Y középpont” mezőkben a forgásközéppont koordinátái vannak megadva. Figyelembe kell venni, hogy a koordináták origója a kép bal felső sarkában van, Y pedig lefelé növekszik. Alapértelmezés szerint az elforgatás középpontja a betöltött kép geometriai középpontja.

A „Forgatás” gombra kattintva vagy az Enter billentyű lenyomásával a kép a megadott forgatási középponthoz képest meghatározott szögben elfordul, és megjelenik az ablakban. A kép 90°-os többszörös szögben történő elforgatása egyszerűsített séma szerint történik, az eredeti kép pixelkoordinátáinak egyszerű átalakításával, miközben a „Center X” és a „Centre Y” értékeket figyelmen kívül hagyja.
Az algoritmus működési ideje másodpercben a „Forgatás” gomb alatt jelenik meg.

A „Mentés…” gombbal az elforgatott kép BMP fájlba menthető.

Ha a végleges kép nem fér be az ablakba, a StretchBlt API funkcióval az ablakszegélyekhez igazodik - ezért a nagyméretű képek valódi minőségét csak az elmentett BMP fájl segítségével tudjuk értékelni.
Ha egy képet más szögbe szeretne elforgatni, nem kell újra betöltenie – a kiválasztott fájl képe kerül elforgatásra, nem pedig az ablakban éppen megjelenített.

A négymagos, 2,67 GHz-es processzorral rendelkező gépen egy 1024 x 768-as méretű képet ez a program tetszőleges szögben elforgat, átlagosan körülbelül 0,5 másodperc alatt. Egy kép 4000 x 4000 méretű - körülbelül 10 másodperc alatt. Az algoritmus működési ideje a különböző szögeknél eltérő lehet, mivel a különböző szögekben lévő képet különböző számú „szilánkra” osztják fel, ennek megfelelően eltérő a töredékek területének kiszámítására fordított teljes idő.

A végső képpontok színéről lebegőpontos formátumban információt tartalmazó közbülső tömb a kiterjesztett típuson (10 bájt) van megvalósítva, így a nagy (kb. 5000 x 5000 pixelnél nagyobb) képek feldolgozása memóriatúlcsordulási hibát okozhat. Javítani lehet a helyzeten, ha kevésbé pontos adattípust használunk, és a szám egész részét közvetlenül a végső bittérképbe mentjük, és csak a tört részt hagyjuk a segédtömbben.

eredmények

Végezzük el a Photoshopban megvalósított precíziós algoritmus és képforgató algoritmus működésének összehasonlító elemzését.
1. teszt
Az első teszthez egy nagyon egyszerű képet készítettem - egy 1 pixel vastag és 10 pixel hosszú vízszintes fekete vonalat, eltolva egy 100 x 100 pixel méretű fehér négyzet közepétől:

Ezután ezt a képet a (0, 0) koordinátájú ponthoz képest az óramutató járásával megegyező 3°-kal elforgattam. A (0, 0) pontot azért választottam, mert kísérleteim alapján a Photoshop pontosan ehhez a ponthoz képest forgatja el a képet. Íme az összehasonlító eredmény (24x nagyítva):

Precíziós algoritmus

Photoshop 7.0.1

Photoshop CS6 (64 bites)
A Photoshop algoritmus kontrasztosabb képet produkál, míg a precíziós algoritmus valamelyest „elmosódik” a képet. De általában, vizuális értékeléssel az eredmény majdnem ugyanaz. Mellékesen megjegyezzük, hogy a Photoshopban megvalósított forgatási algoritmus 10 év alatt nem változott jelentős mértékben.

2. teszt
A második teszthez a szabványos Win7 disztribúcióból a Tulipot választottam:

Miután ezt a képet az óramutató járásával megegyező irányban 5°-kal elforgattam a geometriai középponthoz képest, összesítettem az összes képpont színét az RGB csatornák alapján. Íme a precíziós algoritmus és a Photoshop algoritmus eredménye:
A zárójelben lévő számok ennek a mutatónak az eredetitől való abszolút eltérését mutatják.
A kép színe precíziós elforgatás után és kerekítés előtt gyakorlatilag nem változott - ami várható volt.
A legnagyobb eltérést ebben az esetben a Photoshop algoritmus G csatornájában találjuk. Százalékosan ez az eltérés csak 0,06%, tehát „szemmel” nem észrevehető, de a Photoshop eredménye perfekcionizmus okán rosszabb, mint egy precíziós algoritmusé.
Fontos megjegyezni, hogy a precíziós algoritmusban az egyes pixelek színének a BMP formátum által megkövetelt egész értékre kerekítése visszafordíthatatlanul megsemmisíti a színinformációk egy részét.

A két algoritmus vizuális összehasonlításához adok egy nagyított képrészletet,

5°-kal elforgatva az óramutató járásával megegyezően, Photoshop:

És egy precíziós algoritmussal:

Az összehasonlító elemzés azt mutatja, hogy a Photoshop jobban képes megőrizni a kép kontrasztos elemeit, ugyanakkor torz színű „glóriákat” hoz létre. A precíziós algoritmus nem torzítja a színt, ugyanakkor valamelyest „elmosódik” a képen.

következtetéseket

1. Egy raszteres kép tetszőleges szögben történő pontos és egyben viszonylag gyors elforgatása lehetséges. Továbbra is rejtély számomra, hogy a professzionális grafikus szerkesztőknek miért nincs olyan lehetőségük, amely lehetővé teszi a felhasználó számára, hogy egy kicsit több idő alatt rendkívüli pontossággal elforgathassa a képet.

2. A figyelembe vett algoritmus rendkívüli pontossága ellenére a kép inverz transzformációja, i.e. Ellentétes szögbe forgatni a minőség elvesztése nélkül lehetetlen, mert a pontos színérték kerekítése (lebegőpontos formátumban) visszafordíthatatlanul tönkreteszi a színinformációk egy részét.

3. A kontrasztos részletek vizuális észlelése szempontjából a legjobb eredményt a szuboptimális Photoshop algoritmus adja. Célszerű precíziós algoritmust használni azokban az esetekben, amikor fontos a maximális információ megőrzése a kép színéről.

UPD: Mert gyakorlati használatírt egy programot, amely egy leegyszerűsített algoritmust valósít meg, amelyben a végső kép minden pixelére az eredeti képen lévő összes szükséges pixeldarabot szekvenciálisan kiszámítja, és azonnal megtörténik a színkerekítés. Csak ezután kerül kiszámításra a végső kép következő pixelje. Ebben az esetben a program többször is hozzáfér a forráskép egyetlen pixeléhez. A számítási idő így átlagosan 1,7-szeresére nőtt, de az algoritmus ezen verziójában a memóriát csak bittérképek tárolására fordítják, ami lehetővé teszi a képekkel való munkát. nagy méretek. Letöltheti a programot és a forrásokat



Előző cikk: Következő cikk:

© 2015 .
Az oldalról | Kapcsolatok
| Oldaltérkép