Şekli 45 derece döndürün. Dönme açısı nedir?

Köşe dönüm noktalarından birinin hareketsiz kaldığı bir gövdenin veya kirişin hareketini karakterize eden temel fiziksel miktarı temsil eder. Buna göre, bu açı tam olarak göreli olarak belirlenir. sabit nokta. Bu değer kendine ait birimi ve boyutu vardır.

Talimatlar

İÇİNDE modern fizik Dönme açısı, fiziksel bir nicelik olarak, düzlem açı birimleri cinsinden tahmin edilir. Bir düzlem açısının değerini belirlemek amacıyla mı? Matematikte kabul edilen denklemleri kullanır. İÇİNDE bu bağlamda Aşağıdaki iki seçenekten birini kullanabilirsiniz. İlk yöntem: ? = s/RBurada s, bir daire yayının uzunluğunu belirtir ve R, dairenin yarıçapının uzunluğudur.

İkinci bağlantı durumunda yarım kabuklardan biri manşona sağlam bir şekilde bağlanır. Yaprak yayların esnekliği sayesinde iki burç artık birbirine göre radyal olarak dönebilmektedir. Üç parçalı bağlantı durumunda, manşonlardan biri tekrar bölünür ve dolayısıyla bölünmemiş manşonun ortada yer aldığı yarım kabuğun üzerine yerleştirilir. Bu tasarım daha kararlıdır ancak iki harici destek bloğu gerektirir. Orta kısım, karşılık gelen dönme açısı alanında dıştaki dar kollara göre serbestçe hareket edebilir.

İkinci yol ise ters denklemi kullanmaktır. trigonometrik fonksiyon, şuna benziyor: ? = arktan (a/b), burada b ve a, bir dik üçgenin bacaklarının karşılık gelen uzunluklarından başka bir şey değildir.

kullanarak dönme açısını tahmin ederken matematiksel koşullar Fizikte incelikli bir değişiklik yapılır, ancak bu yaklaşımın da belirli sonuçları vardır. Gerçek şu ki, dönen bir cismin dönme açısını tahmin etmeye çalışırken, pratikte kişi, bu cismin herhangi bir noktası tarafından bir daire yayı boyunca kat edilen yolu değerlendirir; bu, bir fiziksel miktarın diğeriyle ikame edilmesidir, yani bu özel durumda, dönme hareket biçiminin yerini yörünge alır.

Daha önce de belirtildiği gibi, enine yay bağlantısı, sınırlı bir dönme açısına sahip dönme hareketleri için silindirik bir yataktır. Radyal ve eksenel yönlerde etki eden kuvvetlere karşı sertliği nispeten yüksektir. Burulma sertliği 10 çeşitli boyutlar±15°, ±7,5° ve ±3,7° dönüş açılarına göre üç yay kalınlığı seçilebilir. Detaylı bilgi Mevcut seriler hakkında bilgi ilgili incelemede verilmiştir.

Dönme açısıyla ilgili olarak tekrar tekrar rahatsızlıklar ortaya çıkıyor. Geçmişte nominal dönüş açısı 30°, 15° ve 7,5° olarak belirlenmişken, artık 15°, 7,5° ve 3,7° olarak belirlenmiştir. Geometri ve yaylar sadece tanım gereği değişmedi. Daha önce mümkün olan maksimum dönme açısından gittiyseniz, bugün daha çok sonsuz yaşam beklentisi açısından bahsediyoruz.

Modern fizikte dönme açısının ölçü birimi “rad” olarak kabul edilir. Modern fizikte dönme açısının boyutsuz mu yoksa boyutlu mu, türev mi yoksa temel nicelik mi olduğu sorusundan daha tartışmalı bir konu bulmak hala oldukça zordur.

Ancak sorular hala varlığını sürdürüyor ve bunların başlıcaları şunlar: Fizikte neden temel prensiplere dayalı olarak dönme açısını belirleyen bir denklem yok? fiziksel büyüklükler, eğer türetilmiş bir fiziksel miktarsa, genellikle boyutsuz bir miktar olarak kabul ediliyorsa, dönme açısı neden SI'da kendi ölçüm birimine sahiptir?

Genel olarak çapraz bağlantıların esnekliği, yay sabiti ve servis ömrü koşullardan bağımsızdır. çevre. Ayrıca kir ve toz, kimyasal olarak agresif maddeler olmadığı sürece makul sınırlar dahilinde bağlantıyı etkilemez. Daha toz elbette bağlantı noktasına sıkışabilir ve hareketlerini engelleyebilir. Aşırı sıcaklıklar, özellikle ısı ve nem bir araya gelerek korozyona neden olduğunda servis ömrünü etkileyebilir. Bu tür uygulamalarda özel derz malzemesi veya yüzey koruması seçilmelidir.

Bu alanda periyodik soğutma ve ısıtmanın hiçbir etkisi yoktur olumsuz etki fonksiyon başına. Statik kuvvetler karşısında stabilite, kuvvet vektörünün yaprak yaylara göre yönüne bağlıdır. Şekil 2, kranyal ekleme uygulanabilecek kuvvet türlerini göstermektedir.


Dikkat, yalnızca BUGÜN!

İlginç olan her şey

Eğri çizginin tanımına göre analitik geometri belirli bir nokta kümesini temsil eder. Bu tür noktaların herhangi bir çifti bir segmentle birbirine bağlıysa buna akor adı verilebilir. En yükseklerin ötesinde eğitim kurumlarıçoğunlukla dikkate alınır...

Herhangi bir daireye iki farklı yarıçap çizerek, içinde iki merkezi açıyı belirtmiş olursunuz. Bu açılar sırasıyla daire üzerindeki iki yayı belirleyecektir. Her yay sırasıyla iki kiriş, iki dairesel bölüm ve iki sektör tarafından tanımlanacaktır. Boyutlar...

Dönme açısı eklemin sıfır konumundan ölçülür. Büküm her iki tarafta veya bir tarafta yukarıya doğru uzanabilir sıfır noktası. Direksiyon açısı yaprak yaylardaki malzeme gerilimini doğrudan etkiler. Her bir rulman veya esnek bağlantı için beklenen hizmet ömrü genellikle en uzun olanıdır. önemli özellik. Yük ve direksiyon açısı sonucu yaprak yaylardaki malzemenin gerilmesi ile belirlenir. Şekil 3'te gösterilenler tipik bağımlılık yük, dönüş açısı ve kullanım ömrü arasında.

Aşağıdaki özellikler var farklı anlam uygulamaya bağlı olarak. Ayrıca X bağlantısının kendisi üzerinde, bağlantının kurulduğu cihaza göre daha az etkiye sahiptirler. Yaprak yayların geri gelme momentinin dönme açısına bölünmesine yay sabiti denir. Statik veya dinamik olarak ölçülebilirler. Çapraz yay bağlantısının serbest ucuna bağlanan kütlenin titreştiği rezonans frekansını etkiler.

"Açı" kelimesinin farklı yorumları vardır. Geometride açı, bir noktadan (tepe noktasından) çıkan iki ışınla sınırlanan bir düzlemin parçasıdır. Ne zaman hakkında konuşuyoruz düz, keskin, açılmış açılar hakkında, o zaman tam olarak demek istiyorlar...

Öklid geometrisinde bir düzlem üçgen, kenarlarının oluşturduğu üç açıdan oluşur. Bu açıların büyüklüğü çeşitli şekillerde hesaplanabilir. Üçgen en basit şekillerden biri olduğundan basit hesaplama formülleri vardır...

Yay sabiti, bağlantıya etki eden kuvvetlerin boyutuna ve yönüne bağlıdır. Yaylar basınç altındayken dikey yükün artmasıyla yay sabiti artar. Öte yandan yaylar gerilmeye maruz kaldığında düşey yükün artmasıyla yay sabiti azalır. Bu fenomen bazen özellikle düşük öz rezonansa ulaşmak için kullanılabilir.

Bağlantı daha sonra radyal kuvvetlerin yayları uzatma yönünde güçlendireceği ve böylece yay sabitinin azaltılacağı şekilde yapılır. Şekil 4: Radyal yükün bir fonksiyonu olarak yay sabiti. Yaprak yaylar bükülebileceği için bu yük aralığında çapraz bağlantıların kullanılması önerilmez.

Kinematikte daire dahil karmaşık bir yörünge boyunca cisimlerin hareketini açısal hız kavramlarıyla açıklamak, açısal ivme. Hızlanma değişimi karakterize eder açısal hız zamanla bedenler. Pek çok sinema filminde...

Yay, bir daire oluşturan kapalı bir eğrinin parçasıdır. Bir dairenin merkezinden, ışınları dairenin yayın uçlarıyla çakışan noktalarda kesişecek bir açı oluşturursak, o zaman verilen açı dikkate alınacak merkez açı yaylar. ...

Yatay yük aynı zamanda yay sabitini de değiştirerek Şekil 4'teki eğrilerin sola doğru hareket etmesini sağlar. 10 ile gösterilen bağlantılar en ince yaylara sahiptir ve bu nedenle aynı boyuttaki en küçük yay sabitine sahiptir. 20 ile gösterilen bağlantılar orta düzeyde bir yaya ve dolayısıyla daha yüksek bir yay sabitine sahipken, 30 ile gösterilen bağlantılar en güçlü yaylara sahiptir ve her biri aynı boyutta en yüksek yay sabitine sahiptir.

Yay sabiti dairesel hareket boyunca neredeyse sabit kalır. Burç konfigürasyonu yay sabitini etkilemez. Tipik olarak yay sabiti %10 toleransla verilir. Doğrusallık çapraz yay bağlantısının geometrisinden kaynaklanmaktadır. Tamamen doğrusal bir bağlantının, torku direksiyon açısının üzerine tamamen doğrusal olarak artırması gerekir. Pratikte doğrusal olmayan davranış yalnızca nominal dönüş açısından daha büyük dönüş açılarında gösterilir.

DOĞRUDAN BÜKMEDE ÇİFT DESTEKLİ KİRİŞİN KESİTİNİN SAPMA VE DÖNME AÇISININ BELİRLENMESİ

Çalışmanın amacı: Kiriş kesitinin sapma miktarını ve dönme açısını deneysel olarak belirleyin ve bunları teorik hesaplamalarla elde edilen değerlerle karşılaştırın.

KISA TEORİK BİLGİLER

Dış kuvvetlerin etkisi altında kiriş, boyuna ekseni bükülecek şekilde deforme olur. Kirişin kavisli eksenine elastik çizgi denir. Bükme sırasında kirişlerin kesitlerinin hareketi iki büyüklükle karakterize edilir: sapma e ve dönüş açısı .

Merkezi yer değiştirme, anlık dönme ekseninin uzaysal yer değiştirmesidir. Yer değiştirmenin miktarı eklemin geometrisine ve dış radyal kuvvetlerin etkisine bağlıdır. Ofset çok küçüktür, dolayısıyla genellikle ihmal edilebilir. Şek. Şekil 7: Dönme açısının bir fonksiyonu olarak merkezin yer değiştirmesi.

Histerezis, bağlantının pozitif veya negatif burulmasından sonra yay malzemesinin elastik etkisinden dolayı sıfır noktasının yer değiştirmesidir. Önceki pozitiften sonraki sıfır konumu ile negatif dönüşten sonraki konum arasındaki fark histerezis açısıdır.

Aşağıda bazı kiriş sabitleme ve yükleme şemaları için deformasyon değerleri verilmiştir. Sapmaların ve dönme açılarının teorik değeri bilinen herhangi bir yöntemle belirlenebilir.

Şema 1. Ortada yoğunlaştırılmış bir kuvvetle yüklenen iki destek üzerindeki bir kiriş, bir T.S.

t.C noktasındaki sapma

A ve B noktalarındaki desteklerdeki dönme açıları

Önceki turlarda binde birkaç civarındadır. Tipik ölçülen değerler aşağıdaki Şekil 9-9'da gösterilmektedir. Şekil 9 ±3,7° nominal dönüş açısına sahip çapraz bağlantılar için histerezis eğrileri Şekil 11 ±15° nominal dönüş açısına sahip çapraz bağlantılar için histerezis eğrileri Şekil 10 ±7,5° nominal dönüş açısına sahip çapraz bağlantılar için histerezis eğrileri.

Enine helezon yayların konfigürasyonuna bağlı olarak yaylar farklı yüklere maruz kalır. Aşağıda bazıları yapıcı çözümler normal versiyonun çapraz bağlantılarının kurulumu için. Titreşim durumunda olağan vidalı sabitleme yöntemlerinden birinin kullanılması tavsiye edilir. Gerginlik, kenetleme vidasının karşısında kesikli çizgiyle gösterildiği gibi delikli bir yuva sağlanarak azaltılabilir.

Şema 2. İki konsantre kuvvetle yüklenen iki destek üzerindeki kiriş.

C veya D noktasında sapma

Desteklerde dönme açısı

Bu düzenleme düşük torklu uygulamalar için seçilebilir. Sıkıştırma kuvveti, delikte bükülmeyi önleyecek kadar yüksek olmalıdır. Bağlantı yerinin deliğe yerleştirilmesini kolaylaştırmak için boşluk aralıklı olmalıdır. Elastikiyet sınırının aşılmamasına dikkat edilmelidir.

Radyal düzenlemede tespit pimi ile kurulum

Bu cihazda sabitleme dişli bir pim kullanılarak gerçekleştirilir. Çapraz dikişin deformasyonunu önlemek için başsız vidanın dikkatlice sıkılması tavsiye edilir. Titreşim oluştuğunda vidanın sabitlenmesi gerekir. Montajdan sonra delme ve damlama. İşleme sırasında yaylara dokunulmamalıdır.

Şemalar Z,4. Konsolun ucunda yoğunlaşmış bir kuvvetle yüklenen, konsollu iki destek üzerindeki kiriş.

Konsolun sonundaki sapma

Açıklığın ortasında sapma

A noktasında dönme açısı

Enine ve eksenel yönlerde tespit pimi ile montaj

Bastırdıktan sonra kılavuz manşonla bükün ve ardından sabitleyin. Delme sırasında bağlantının iç duvarına zarar vermekten kaçının. Sabitleme için basınç veya pimler kullanılır. Bağlantı yerinin "kuru buza" daldırılmasıyla zarar vermeden büzülme sağlanabilir. İlgili destek parçası deliğin genişletilmesi için ısıtılabilir. Montaj sırasında hasar görmesini önlemek için lütfen özel alet resimde gösterildiği gibi. Normal kare ağ veya üçgen ağ ile çalışıyoruz.

Şekil 15. Kiriş yükleme şemaları

t.A cinsinden destekteki dönme açısı

;

Formüllerde kabul edilen semboller:

Y- sapma (enine kesitin ağırlık merkezinin kirişin eksenine dik yönde hareketi);

Kare ağ ve üçgen ağ. Bu ağa afin eşleme uygulanır. Ekran ızgarası ve ızgarası üst üste yerleştirilmiş görünür. Küçük bir çeviri gölgeye yol açar. Hafif bir dönüş görünecektir. Bir prototip ızgara ve ızgaraları paralel, dikey düzlemlerde tanıtıyoruz. Belli bir mesafeden baktığımızda perspektif sonucu yeni bir desen fark ederiz. Aşağıdaki resimlerde dört katına çıktık daha fazla mesafeön düzlemin önündeki iki düzlem arasında. Karşılık gelen ön noktalar.

Noktalar açıkça çizilmiştir. Mavi ve kırmızının üst üste bindirilmesi verir mor renk. Üst üste binen noktalardan oluşan kare bir ızgarayı ve üçgen bir ızgarayı tanıyoruz. 45°'lik bir dönüşte, buna benzer görünse de, dönüş merkezinin dışındaki iki ızgara noktası arasında kesin bir örtüşme yoktur. Bunun nedeni irrasyonel bir sayı olmasıdır.

R- kirişe uygulanan kuvvet;

ben - kiriş uzunluğu;

e - 1. tür esneklik modülü;

BEN - kirişin kesitinin nötr eksene göre eksenel atalet momenti.

Ekipman ve numuneler

İki destekli bir kirişin bükülmesini incelerken SM-4A kurulumu kullanılır.

İki menteşeli desteğin üzerine dikdörtgen bir kiriş (6  40) mm monte edilmiştir.

Daha hassas kaplamalar, aşağıdakileri içeren bir çarpanla bir streç eklenerek elde edilir. Sonraki örnek- esneme katsayısı. Orijinal mavi ızgaraya göre ızgara genişliği 3 olan kaplamaya sahip kare bir ızgara görüyoruz. Kırmızı ızgaraya göre ızgaranın köşegen uzunluğu artık şu şekildedir.

Düşük esneme ile rotasyon. Doğrudan esneme katsayısı ile. Analog etki, üçgen bir ızgaranın bir ızgara noktası etrafında 30° döndürülmesiyle elde edilir. Etrafa gerilme durumunda, yani. yaklaşık %1, kesin merkez dışı örtüşmeler var - bunlar nerede?

Hareketli stand, açıklık uzunluğunu 700 ila 1000 mm arasında ayarlamanıza ve ayrıca bir konsol kirişi elde etmenize olanak tanır.

Numunenin referans bölümlerinin sapmalarının ve dönme açılarının ölçümü, bölme değeri 0,01 mm olan kadranlı göstergeler kullanılarak gerçekleştirilir. Sapmaları ölçmek için göstergeler, kurulumun tabanı boyunca bir kılavuz boyunca hareket edebilen gösterge standlarına monte edilir. Raf, bir durdurucu kullanılarak kılavuza sabitlenir. Dönüş açıları, kirişe bağlı kollar, kolların hareketini algılayan göstergeler kullanılarak ölçülür.

Ancak bu, ne kadar büyük olursa olsun, zaten esneme faktörüyle ilgilidir. Ayrıca germeden hassas kaplamalar elde edebilir miyiz? saf rotasyonla mı? Aşağıdaki şekil dönüş açısını göstermektedir. Izgara genişliğine ve yatayın tersi eğime sahip, eğimli bir kare kaplama ızgarasını tanıyoruz.

Hepimiz kateterin uzunluğu ve hipotenüs uzunluğunun bulunduğu dik üçgeni biliyoruz. Çok özel dik üçgenler Kateterlerin tam uzunluğu ve hipotenüsün tam uzunluğuna sahip olan üçgenlere Pisagor üçgenleri denir. Ancak bizim dönme açımız bu üçgenin kateter uzunluğu ve hipotenüs uzunluğu ile yaptığı açıdır. Aslında böyle bir üçgeni ağımıza yerleştirebiliriz.

TEST PROSEDÜRÜ

Elastik deformasyonlar sırasında kesitin dönme açıları küçük olduğundan, kabul ediyoruz

, Daha sonra

veya

Ancak sadece döndüğümüz ve esnemediğimiz için ağ genişliği her iki ağda da aynıdır. Çemberin ve üçgenin çemberinin de birkaç ızgara noktasından geçtiğini görüyoruz. Kırmızı mesh'i döndürerek üçüncü bir mesh de ekleyebiliriz. Bu yeşil renkli desenin görüntüsü aşağıdaki resimde gösterilmektedir.

Her üç ızgaranın hassas katmanları, ızgara genişliği 5 olan eğimli kare bir ızgara oluşturur. Bu yeni ızgara eğimlidir. Böylece, dik üçgenin hipotenüsünün karesi, bu yeni taramanın tarama karesidir. Elbette elimizde bir Pisagor üçgeni olduğu için kırmızı kareye de uyuyor. İki bacak karesi orijinal mavi ızgaraya sığar.

burada S gösterge okumasıdır, mm;

a, numunenin nötr katmanından gösterge milinin eksenine kadar ölçülen kolun uzunluğudur, mm (a=150mm);

 - bölümün dönme açısı, rad.

    Daha doğru sonuçlar elde etmek için testi üç kez tekrarlayın. Sapma miktarı ve dönme açısı, ölçümlerin aritmetik ortalaması olarak belirlenir.

    Test sonuçlarını tabloya girin.

    Hesaplamak teorik değer Deneysel olarak ölçümlerin yapıldığı kiriş kesitinin aynı yükleme koşulları için sapmaları ve dönme açıları.

    Formülleri kullanarak teorik hesaplamaların hatasını belirleyin.



RAPORUN HAZIRLANMASI

Yapılan çalışmaya ilişkin rapor, kurulumun bir taslağını, bir tasarım şemasını, sapmaların ve dönme açılarının deneysel olarak belirlenmesinin sonuçlarını, sapmaların ve dönme açılarının teorik hesaplamalarını içermelidir; Deneysel ve teorik olarak elde edilen sonuçların karşılaştırılması.

TEST SORULARI

    Bir kirişin elastik çizgisi nedir?

    Kirişlerin bükülme sırasında deformasyonları nelerdir?

    Şema 1, 2, 3 için kirişlerin maksimum sapmalarını hesaplayın.

    Aynı kiriş şemaları için destekler üzerindeki dönme açılarını hesaplayın.

    Yük yarıya indirilirse kirişin sapması kaç kez değişir?

    Kirişler çelik ve dökme demirden yapılmıştır, aynı boyutlara sahiptir ve aynı kuvvetlere maruzdur; hangi kiriş daha büyük bir sapmaya sahip olur?

    Bir gösterge kullanarak sapmayı hangi doğrulukla ölçebilirsiniz?

Tablo 1

deflection'un tanımı

Dönme açısının belirlenmesi

Sapma göstergesi okumaları, mm

Tecrübeli sapma, mm

Teorik sapma, mm

Göreceli hata

Dönme açısı göstergesinin göstergesi, m

Deneyimli dönüş açısı,  op

Teorik dönme açısı,  t

Göreceli hata



Burada P 0, göstergenin sıfır değerine karşılık gelen ön yüktür.

P 1, P 2, P 3 – aynı değerler yük artışları.

Haberlere abone olun


GİRİİŞ SORUN BİLDİRİMİ.

1. GÖRÜNTÜ DÖNDÜRME ALGORİTMASININ AÇIKLAMASI

2. C# PROGRAMLAMA DİLİNDE UYGULAMA GELİŞTİRME

2.1 Uygulamanın açıklaması

2.2 Uygulamanın test edilmesi

ÇÖZÜM

KULLANILAN KAYNAKLARIN LİSTESİ

EK A

GİRİİŞ SORUN BEYANI

"Görüntülerin Edinilmesi ve İşlenmesi" disiplini çalışmasının bir parçası olarak, bir test olarak görev, algoritmayı tanımlamak ve görüntüyü kullanıcı tarafından belirlenen bir açıyla merkez etrafında döndürme işlevini uygulamak için belirlendi. Bir açının kosinüsünü ve sinüsünü bir kez hesaplayın. Tüm başlangıç ​​parametrelerini isteğe göre ayarlayın ve kabul edilebilir değerler aralığına uygunluğu kontrol edin.

1 . Görüntü döndürme algoritmasının açıklaması

Bir görüntüyü derece cinsinden belirtilen bir açıyla döndürmek için özel Bitmap RotateImage(Bitmap Image, int angle) işlevini kullanın.

Giriş parametreleri:

Bitmap Görüntüsü - döndürülecek görüntü;

int angle - derece cinsinden dönüş açısı.

Fonksiyon şu şekilde döndürülür: belirtilen açı görüntü.

Fonksiyonun algoritması:

1) Giriş, görüntü ve derece cinsinden dönüş açısıdır;

2) Dönme açısının sinüsünü ve kosinüsünü hesaplayın (bir kez). Dönme açısı radyan cinsinden belirtilir;

3) Döndürme açısının hesaplanan sinüs ve kosinüsünü kullanarak görüntünün yeni genişliğini ve yüksekliğini hesaplayın;

4) Bir paralelkenarı tanımlayan bir dizi Nokta atış galerisi yapısının başlatılması (Nokta noktaları = yeni Nokta).

5) Dönme açısına bağlı olarak (radyan cinsinden hangi çeyrekte yer alır), koordinatlar hesaplanır üç puan yeni bir imaj oluşturmak için. Koordinatlar (3) noktasına göre hesaplanır. bu algoritmanın(yeni genişlik ve yükseklik - noktaların X ve Y koordinatlarının yeniden hesaplanması);

6) Döndürülmüş görüntünün üç noktayı kullanarak çizilmesi (paralelkenarın sol üst, sağ üst ve sol alt köşeleri. Dördüncü nokta, ilk üçe göre tahmin edilir).

g.DrawImage(Görüntü, noktalar); - çizim işlevi.

7) Döndürülmüş görüntüyü bu işlevin dışında kullanmak üzere döndürün.

Görüntünün ortalanması, pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage öğe özelliği tarafından gerçekleştirilir;

2 . C# PROGRAMLAMA DİLİNDE UYGULAMA GELİŞTİRME

Görüntü işleme uygulamasının geliştirme aracı olarak MS Visual Studio 2012, programlama dili olarak ise C# seçilmiştir. Bu araç seti grafiklerle çalışmak için yeterli çeşitlilikte olanaklar sağlar.

Göreve uygun bir uygulama geliştirildi.

2. 1 Uygulama Açıklaması

görüntü açısı aralığını döndür

Uygulama frmRotationForm sınıfını temel alır.

İÇİNDE bu sınıf Aşağıdaki yöntemler uygulanır:

Özel void btnRotateImage_Click(object sender, EventArgs e) yöntemi, "görüntüyü döndür" düğmesine tıklamayı yönetir. Tıkladıktan sonra, metin alanının içeriği bir sayıya dönüştürülmeye çalışılır (daha sonra dönme açısını derece cinsinden depolamak için tasarlanmış olan ang değişkeni olarak kullanılır). Ayrıca bu yöntemİstisnalar ele alınır ve görüntüyü döndüren RotateImage işlevi başlatılır.

Özel Bitmap RotateImage(Bitmap Image, int angle) yöntemi, görüntüyü belirli bir açıyla döndürür. Döndürülmüş bir görüntü döndürür.

Özel void btnLoadImage_Click(object sender, EventArgs e) yöntemi, diskteki bir görüntüyü orijinal görüntüyle birlikte PictureBox'a yükler.

Özel void timer1_Tick(object sender, EventArgs e) yöntemi her zamanlayıcı işareti için yürütülür. İÇİNDE bu uygulama frekans 50 milisaniyeye ayarlanmıştır (animasyon modunda daha düzgün çalışma için).

2. 2 Uygulama testi

Geliştirilen uygulama Microsoft Windows 7 64-bit işletim sisteminde .NET Framework 4.5 kurulu olarak test edilmiştir. Yürütülebilir dosya Image_Rotation.exe'nin başlatılmasının sonucu Şekil 2.1'de gösterilmektedir.

Şekil 2.1 - Başlangıçtaki uygulama penceresi

Uygulamayı başlattığımda seçtiğim varsayılan görüntü “kablolu”. “Resim yükle” butonuna tıklayarak değiştirebilirsiniz. Kendi görselinizi seçmenin sonucu Şekil 2.2'de sunulmaktadır.

Şekil 2.2 - Döndürme için kendi görselinizi seçme

Diğer eylemler varsayılan görüntüde tartışılmaktadır. Formun sol üst köşesindeki ilgili metin alanında döndürme açısını seçtikten sonra “resmi döndür” butonuna tıklayın. (bkz. Şekil 2.3).

Şekil 2.3 - Görüntünün 8 derece döndürülmesinin sonucu

Şekilde açıklanan dikdörtgenler yardımcı bir araçtır, size kolaylık sağlamak için görüntülenirler ve görüntünün merkezini gösterirler.

Uygulama "aptal koruma" uygular, yani: 360 dereceden büyük veya -360 dereceden az bir açı ve metnin yanı sıra girmeye çalışırsanız, bir uyarı görüntülenir ve resim işlenmez:

Şekil 2.4 - Görüntüyü -361 derece döndürme girişimi

Uygulama, saat yönünde/saat yönünün tersine "animasyonlu döndürme" ve "yakınlaştırma" (resmi PictureBox kabına sığacak şekilde büyütme) olanağını uygular.

Şekil 2.5 - Animasyonlu döndürme

ÇÖZÜM

Belirlenen görev referans şartlarıİle deneme çalışması, uygulandı.

C# programlama dilini kullanarak görüntü işleme teknikleri üzerine eğitim aldım.

Uygulamanın kaynak kodu Ek A'da sunulmaktadır.

KULLANILAN KAYNAKLARIN LİSTESİ

1 Starovoytov V.V. Dijital görüntüler: makbuzdan itibaren

işleme / V.V. Starovoitov, Yu.I. Golub - Minsk: Belarus'un OIPI NAS'ı, 2014. - 202 s. - ISBN 978-985-6744-80-1.

2 Christian Nagel, Bill Ivien ve diğerleri. Profesyoneller için C# 2008 ve .NET 3.5 platformu - Profesyonel C# 2008. - M.: Dialectics, 2008. - ISBN 978-5-8459-1458-3.

3 Microsoft platformunda uygulama geliştirme. MSDN'si [ Elektronik kaynak]: http://msdn.microsoft.com/ru-ru/library/4f9s3at1(v=vs.110).aspx . - Erişim tarihi: 25.10.2014.

EK A

"frmRotationForm" sınıfının listesi

System.Collections.Generic'i kullanarak;

System.ComponentModel'i kullanarak;

System.Data'yı kullanarak;

System.Drawing'i kullanarak;

System.Linq'i kullanarak;

System.Text'i kullanarak;

System.Threading.Tasks'ı kullanma;

System.Windows.Forms'u kullanarak;

System.Drawing.Drawing2D kullanarak;

ad alanı Image_Rotation

genel kısmi sınıf frmRotationForm: Form

Private int jj;//derece cinsinden açı

public frmRotationForm()

BaşlatmaBileşeni();

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

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

jj = Convert.ToInt32(textBox1.Text);

özel void btnRotateImage_Click(nesne göndereni, EventArgs e)

ang = Convert.ToInt32(textBox1.Text);

eğer (ang)< -360 || ang > 360)

yakalama (Örneğin istisna)

Mesaj Kutusu.Show("0'dan 360'a kadar açılara izin verilir. \n\"-\" işaretinin saat yönünün tersine dönmesine izin verilir.");

Bitmap i = new Bitmap(pictureBox1.Image);

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

//this.Controls.Add(pictureBox1);

özel Bitmap RotateImage(Bitmap Görüntüsü, int açı)

var pi2 = Math.PI/2;//PI ikişer ikişer

int eskiGenişlik = Resim.Genişlik;

int eskiYükseklik = Resim.Yükseklik;

var theta = açı * Math.PI / 180.0 //radyana dönüştürün;

var kilitli_theta = theta;

if (kilitli_theta< 0.0) locked_theta += 2 * Math.PI;

çift ​​yeniGenişlik, yeniYükseklik;

int nGenişlik, nYükseklik;

çift ​​bitişikÜst, karşıtÜst;

çift ​​bitişikAlt, karşıAlt;

#region Yeni genişlik ve yüksekliği hesapla

double SİNUS = Math.Abs(Math.Sin(locked_theta));

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

if ((locked_theta >= 0.0 && kilitli_theta< pi2) || (locked_theta >= Math.PI && kilitli_theta< (Math.PI + pi2)))

(// Açı (>= 0 ve< Pi/2) или (>= PI ve< ПИ + Пи/2)

bitişikTop = COSİNUS * eskiGenişlik;

karşıTop = SİNÜS * eskiGenişlik;

bitişikAlt = COSİNUS * eskiYükseklik;

karşıAlt = SİNÜS * eskiYükseklik;

bitişikÜst = SİNÜS * eskiYükseklik;

karşıTop = COSİNUS * eskiYükseklik;

bitişikAlt = SİNÜS * eskiGenişlik;

karşıAlt = COSİNÜS * eskiGenişlik;

yeniGenişlik = bitişikÜst + karşıAlt;

yeniYükseklik = bitişikAlt + karşıtÜst;

nWidth = (int)(Math.Ceiling(newWidth));//tamsayılara yuvarlama

nHeigth = (int)(Math.Ceiling(newHeigth));

#endregion Yeni genişlik ve yüksekliği hesapla

Bitmap dönüşümlüBmp = new Bitmap(nWidth,nHeigth);

Graphics g = Graphics.FromImage(rotatedBmp);

Nokta noktaları = yeni Nokta ;//paralelkenarı tanımlayan 3 Nokta tipi yapılardan oluşan bir dizi

//Üç nokta şunu temsil eder: paralelkenarın sol üst, sağ üst ve sol alt köşeleri.

//Dördüncü nokta ilk üçten çıkarılmıştır

//referans noktası (0,0) - sol üst köşe

if (locked_theta >= 0.0 && kilitli_theta< pi2) //90

puan = new Point((int)oppositeBottom, 0);

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

puan = new Nokta(nWidth, (int)(oppositeTop));

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

puan = new Nokta((int)(adjacentTop), nHeigth);

puan = new Nokta(0, (int)(adjacentBottom));

puan = new Nokta(nWidth, (int)(oppositeTop));

puan = new Nokta(0, (int)(adjacentBottom));

puan = new Nokta((int)(oppositeBottom), 0);

puan = new Nokta((int)(adjacentTop), nHeigth);

label6.Text = "Merkez ORİJİNAL x="+ (oldWidth / 2.0f).ToString() + ", y=" + (oldHeigth / 2.0f).ToString();

label7.Text = "Merkez ROTATE x=" + (nWidth / 2.0f).ToString() + ", y=" + (nHeigth / 2.0f).ToString();

g.DrawImage(Görüntü, noktalar);

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();

döndürülmüşBmp'yi döndür;

özel void btnLoadImage_Click(nesne göndereni, EventArgs e)

OpenFileDialog dlg = new OpenFileDialog();

dlg.Title = "Resmi Aç";!}

dlg.Filter = "jpg dosyaları (*.jpg)|*.jpg|Tüm dosyalar (*.*)|*.*";

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

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

resimKutusu1.Resim = resimKutusu3.Resim;

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

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

özel void timer1_Tick(nesne göndereni, EventArgs e)

if (checkBox2.Checked)

(//pkcherbox modunu ZOOM olarak değiştirin

PictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

//işaretlenmezse görüntü ortalanır

pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;

if (checkBox1.Checked)

(//“animasyon”un uygulanması - resmin kendi ekseni etrafında saat yönünde/saat yönünün tersine döndürülmesi

radyoButton1.Visible = doğru;

radyoButton2.Visible = doğru;

if (radioButton1.Checked)

( //saat yönünde

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

if (jj == 360) jj = 0;

(//saat yönünün tersine

this.btnRotateImage_Click(bu, e);

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

eğer (jj == 0) jj = 359;

radyoButton1.Visible = false;

radyoButton2.Visible = yanlış;

Benzer belgeler

    Görüntü gürültü filtreleme. İkilileştirilmesi ve döndürülmesi için algoritmalar. Not tanıma için bilgilendirici özelliklerin oluşturulması. Şema yazılım. Programda uygulanan sınıfların, işlevlerin, yöntemlerin açıklaması. Uygulama testi.

    kurs çalışması, 17.12.2013 eklendi

    Grafik formatları hakkında bilgi. Programda bir görüntünün saklanması. Yardımcı veri yapısı olarak kuyruk. İkili dosyadan bir görüntü yükleniyor. Görüntülerle işlemler. Çözünürlükte azalma. Görüntü boyutunu artırın.

    kurs çalışması, 29.06.2013 eklendi

    Uluslararası JPEG standardını kullanarak yarı tonlu bir görüntüyü sıkıştırmak veya sıkıştırmak için tasarlanmış bir programın geliştirilmesi. JPEG yönteminin açıklaması, sonuçların kodu çözülmüş bir görüntü biçiminde çıktısı. Yarı tonlu görüntü sıkıştırma yöntemlerinin gözden geçirilmesi.

    kurs çalışması, eklendi: 10/14/2012

    Genel algoritma iki resmin karşılaştırılması Yöntem maksimum alanlar. Histogram yöntemi. Tanıma için bir resim hazırlanıyor. Çok değişkenli bir fonksiyonun modellenmesi. Vektör dağıtımı. Deforme olabilen modeller. Yazılım uygulaması.

    tez, 29.09.2008 eklendi

    Programda "Winnie the Pooh" çizgi film karakterinin animasyonlu GIF görüntüsünü oluşturma aşamalarının açıklaması Adobe Photoshop CS6. Yinelenen bir görüntü katmanı oluşturma ve GIF animasyonu için çerçeveler hazırlama. Animasyon efektlerini ve sonuç GIF dosyasını özelleştirin.

    laboratuvar çalışması, eklendi 03/05/2015

    Amacı siyah beyaz yarı tonlu görüntüleri renkli görüntülere dönüştürmek olan bir uygulamanın geliştirilmesi. Görüntü işleme tekniklerinin gözden geçirilmesi, görüntü dönüştürme yöntemlerinin kullanılması sinir ağı. Renk alanı kümelemesinin açıklamaları.

    tez, 17.06.2012 eklendi

    Hareket parametrelerinin belirlenmesi dönme hareketi, hızın, ivmenin, dönme açısına bağlı zamanın, dönme süresinin belirli bir açıya ayarlanması. Yapılışın uygulanması matematiksel model Vücut hareket parametrelerinin hesaplanması.

    kurs çalışması, eklendi 03/18/2010

    Bilgisayar grafikleri. Piksel, çözünürlük, görüntü boyutu. Görüntü türleri. Siyah beyaz çizgi ve yarı tonlu görüntüler. İndekslenmiş renkler. Tam renkli görüntüler. Dosya formatları. Renk ve modelleri. Renkli modeller: RGB, CMYK, HSB.

    özet, 20.02.2009 eklendi

    Görüntü kodlama yöntemleri: sayı uzunluğu kodlaması, frekansa bağlı kodlama, Lempel-Ziv yöntemi. 16 bit renkte çizgi boyutu. Her şeyin boyutunun hesaplanması orijinal resim. Yüksek kaliteli ve düşük kaliteli görüntü sıkıştırma örnekleri.

    sunum, 22.10.2013 eklendi

    Adobe Photoshop program arayüzü. Görüntüde değişiklik yapma. Renk tonunu değiştirmeye ve görüntüleri bozmaya yönelik araçlar. Görüntü oluşum sırası. Görüntülerin ton ve renk düzeltmesi, filtreler ve işlevlerle çalışma.

Bir taramalı görüntüyü, görüntünün geometrik merkezine göre 90°'nin katları olan açılarda döndürmek önemsiz bir iştir ve her pikselin koordinatlarının basitçe dönüştürülmesiyle kalite kaybı olmadan çözülebilir.

Aşağıda, bir raster görüntüyü minimum kayıpla rastgele bir merkeze göre rastgele bir açıyla hassas bir şekilde döndürmek için bir algoritmayı ele alacağız.

Sağlanan yardım için Vladislav Vladimirovich Kharchenko'ya şükranlarımı sunuyorum.

Algoritma

Yukarıdaki şekilden, taramalı görüntüyü döndürdükten sonra, son görüntünün her pikselinin renginin, orijinal görüntünün birkaç pikselinin birkaç "parçasının" renklerinin karşılık gelen alanlarla orantılı olarak eklenmesiyle belirlendiği görülebilir. “parçalar”. Dolayısıyla genel anlamda problemimizin çözümü, orijinal görüntünün her pikseli için tüm "parçaların" alanlarını bulmak ve son görüntünün her pikselinin rengini karşılık gelen "parçaların" renklerinden toplamak olacaktır.

Orijinal görüntünün piksel modeli olarak kenar = 1 olan bir kare kullanacağız ve köşeler için aşağıdaki gösterimleri kullanacağız:
i1 - en sağ köşe;
i2 - en alt köşe;
i3 - en sol köşe;
i4 en üst köşedir.

Nihai görüntü modeli, çizgiler arasındaki mesafe = 1 olan paralel yatay ve dikey çizgilerden oluşan bir ızgara olacaktır.

Bu gösterimde taramalı görüntünün dönme merkezinin koordinatları, bir çift rastgele gerçek sayı olarak ifade edilebilir. Yani bizim problemimizde dönme merkezi pikselin geometrik merkezinde veya ızgara çizgilerinin kesişme noktasında değil, Kartezyen koordinatlarda keyfi bir noktada olabilir.

Raster görüntü döndürüldüğünde, her pikselin karesi aynı açıyla (o pikselin merkezine göre) döndürüldüğü için, sorunu bir piksel için çözeceğiz ve sonra ortaya çıkan çözümü orijinalin her pikseline uygulayacağız. görüntü.

Bir bitmap'i döndürmek iki bölüme ayrılabilir:
1. Orijinal görüntünün her pikselinin karesini, bu karenin merkezine göre belirli bir açıyla döndürün.
2. Piksel karesinin merkezinin, görüntünün dönme merkezine göre görüntünün dönme açısına göre yer değiştirmesi, böylece kare, son görüntünün ızgarası üzerinde son konumunu alır.
Bu durumda, son görüntünün ızgarası, orijinal görüntünün her pikselinin karesini 4, 5 veya 6 parça miktarında "parçalara" keser.

Ortaya çıkan seçeneklerin çeşitliliğini sistematik hale getirmek için, orijinal görüntünün piksel karesinin son görüntünün ızgarasıyla olası tüm kesişme noktalarından oluşan bir sınıflandırma oluşturmam gerekiyordu. Önemli ölçüde farklı olan yalnızca 23 seçenek vardı:


Buradaki sözleşmeler aşağıdaki gibidir:
- hücrelerdeki sayılar, görüntü döndürüldükten sonra son görüntü ızgarasının belirli bir hücresine düşen piksel karesinin köşelerinin sayısını gösterir;
- yeşil renk, pikselin bazı bölümlerinin düştüğü ve orada bir "kıymık" bırakmasının garanti edildiği hücreleri gösterir;
- sarı, koşullara bağlı olarak hangi hücreleri gösterir? olabilmek karenin köşeleri tarafından değil, karenin kenarları tarafından oluşturulan bir piksel karesinin "parçalarına" çarpabilir (veya çarpmayabilir).

Açıklık sağlamak için, 3 numaralı seçeneğin olası varyasyonlarından birini vereceğim:

Gördüğünüz gibi, diğer döndürme koşulları altında içerebilmesine rağmen, sağ üst hücre bir pikselin "parçasını" içermiyor.
Okuyucuyu ayrıntılı geometrik hesaplamalarla boğmamak için, bu 23 seçeneğin hepsinde orijinal görüntünün pikselinin, alanı 4 formülün birleştirilmesiyle kolayca hesaplanan "parçalara" bölündüğünü hemen söyleyeceğim. . Aşağıda bu formülleri resimli olarak bulabilirsiniz. Kırmızı renk, son görüntünün piksel karesini kesen ızgara çizgilerini gösterir. Formülle alanı hesaplanan alan sarı renkle gölgelenmiştir.

Formül 1
Bu formül, "parçanın" son alanını hesaplamak için kullanılmaz, ancak tüm pikselin alanının = 1 olduğunu bildiğimiz için yardımcı ara alanların hızlı bir şekilde hesaplanması için kullanılması uygundur.
Karenin köşelerinden nihai görüntünün ızgarasına bırakılan yükseklikler, tüm formüllerde girdi değişkenleri olarak kullanılır, bunun basit nedeni, bu yüksekliklerin hesaplanmasının, koordinatın sayısal değerinin kesirli kısmının anında seçilmesine indirgenmesidir. piksel karesinin karşılık gelen köşesinin.

Formül 2

Bu formül yalnızca 1. ve 2. seçenekte kullanılır.

Formül 3
Sık kullanılan bir formül - iyi tarafı hızlı bir şekilde hesaplanmasıdır. Dönme açısı her piksel için aynı olduğundan, tüm pikseller işlenmeden önce tüm trigonometrik fonksiyonlar bir kez hesaplanabilir ve daha sonra bu değerler döngüde sabit olarak kullanılabilir.

Formül 4
Bu formül iki adımda hesaplanır. Öncelikle parantez içindeki ifade değerlendirilir. Pozitif bir değer alırsa alan hesaplanır. Değerin negatif olması, gridin köşesi ile karenin kenarının oluşturduğu “kıymık”ın pikselden kesilmediği anlamına gelir ve daha fazla hesaplama yapmanın bir anlamı yoktur.

Yukarıdakilerin tümü dikkate alındığında genel olarak algoritma şöyle görünecektir:
1. Orijinal görüntüyü bilgisayar belleğine yükleyin.
2. Son görüntünün boyutlarını piksel cinsinden hesaplayın.
3. Her bir öğesi kayan noktalı sayı formatında 3 RGB renk bileşeni içeren iki boyutlu bir ara dizi oluşturun. Dizinin boyutları son görüntünün boyutlarına eşittir.
4. Kaynak görüntünün tüm piksellerini sırayla inceliyoruz; her birini belirli bir açıyla döndürüyoruz ve piksel karesinin köşelerinin 4 koordinatını hesaplayarak son görüntünün ızgarasına yerleştiriyoruz; pikseli 23 seçeneğe sınıflandırıyoruz ve “parçaların” alanlarını sayıyoruz; Ortaya çıkan "parçaların" renklerini, bu "parçaların" alanıyla orantılı olarak ara dizinin karşılık gelen öğelerine ekliyoruz.
5. Orijinal görüntünün tüm piksellerini işledikten sonra ara dizideki RGB değerlerini her eleman için bir tamsayı değerine yuvarlıyoruz ve bu tamsayı değerlerine göre BMP formatında son görüntüyü oluşturuyoruz.

programı

Yukarıdaki algoritmaya dayanarak Windows için bir program yazılmıştır. Object Pascal'ın kaynak kodları ve derlenmiş yürütülebilir dosya indirilebilir.

Programın arayüzü.
“Aç...” düğmesine tıklamak, bir BMP dosya seçimi iletişim kutusunu açar. Yalnızca 24 bit paletli bitmapler desteklenir. Açık görüntü bir pencerede görüntülenir. Pencere başlığı dosyanın tam yolunu ve görüntü boyutlarını görüntüler.

"Açı" alanında, dönüş açısını derece cinsinden (herhangi bir pozitif sayı) belirtin.
Kesirli sayıları girerken ondalık ayırıcı olarak nokta veya virgül kullanılabilir.

“CW” ve “CCW” radyo düğmeleri dönüş yönünü ayarlar: sırasıyla “saat yönünde” ve “saat yönünün tersine”.

“Arka plan rengi” bloğunda görüntünün kenarlık piksellerinin karıştırılacağı arka plan rengini ayarlayabilirsiniz. Varsayılan arka plan rengi siyahtır.

“Merkez X” ve “Merkez Y” alanlarında dönme merkezinin koordinatları belirtilir. Koordinatların orijininin görüntünün sol üst köşesinde olduğu ve Y'nin aşağıya doğru arttığı dikkate alınmalıdır. Varsayılan olarak döndürme merkezi, yüklenen görüntünün geometrik merkezine ayarlanır.

“Döndür” düğmesine tıklandığında veya Enter tuşuna basıldığında görüntü, belirtilen dönme merkezine göre belirli bir açı kadar döndürülür ve pencerede görüntülenir. Görüntünün 90°'nin katları olan açılarda döndürülmesi, basitleştirilmiş bir şemaya göre, orijinal görüntünün piksel koordinatlarının basitçe dönüştürülmesiyle gerçekleştirilir ve "Merkez X" ve "Merkez Y" değerleri göz ardı edilir.
Algoritmanın saniye cinsinden çalışma süresi “Döndür” butonunun altında görüntülenir.

“Kaydet...” düğmesini kullanarak döndürülen görüntü bir BMP dosyasına kaydedilebilir.

Nihai görüntü pencereye sığmazsa, StretchBlt API işlevi kullanılarak pencere kenarlarına ayarlanır; bu nedenle, büyük görüntülerin gerçek kalitesi yalnızca kaydedilen BMP dosyası kullanılarak değerlendirilebilir.
Bir görüntüyü farklı bir açıya döndürmek için yeniden yüklemenize gerek yoktur; pencerede o anda görüntülenen görüntü değil, seçilen dosyadaki görüntü döndürülür.

Dört çekirdekli 2,67 GHz işlemciye sahip bir makinede 1024 x 768 boyutlarındaki bir görüntü, bu program tarafından ortalama olarak yaklaşık 0,5 saniyede istenilen bir açıya döndürülür. 4000 x 4000 boyutlarında bir görüntü - yaklaşık 10 saniyede. Algoritmanın farklı açılar için çalışma süresi, farklı açılardaki görüntünün farklı sayıda "parçaya" bölünmesi nedeniyle farklılık gösterebilir, bu parçaların alanlarının hesaplanması için harcanan toplam süre de buna göre farklıdır.

Kayan nokta formatındaki son görüntü piksellerinin rengi hakkında bilgi içeren ara dizi, genişletilmiş türde (10 bayt) uygulanır, bu nedenle büyük görüntülerin işlenmesi (yaklaşık 5000 x 5000 pikselden fazla) bellek taşması hatasına neden olabilir. Daha az kesin bir veri türü kullanarak ve sayının tamsayı kısmını doğrudan son bitmap'e kaydederek, yardımcı dizide yalnızca kesirli kısmı bırakarak durumu iyileştirmek mümkündür.

Sonuçlar

Photoshop'ta uygulanan hassas algoritmanın ve görüntü döndürme algoritmasının çalışmasının karşılaştırmalı bir analizini yapalım.
Test 1
İlk test için çok basit bir görüntü aldım - 1 piksel kalınlığında ve 10 piksel uzunluğunda yatay siyah bir çizgi, 100 x 100 piksel boyutlarında beyaz bir karenin merkezinden kaydırılmış:

Daha sonra bu görüntüyü koordinatları (0, 0) olan noktaya göre saat yönünde 3° döndürdüm. (0, 0) noktası seçildi çünkü deneylerime göre Photoshop görüntüyü bu noktaya göre döndürüyor. İşte karşılaştırmalı sonuç (24x yakınlaştırılmış):

Hassas algoritma

Photoshop7.0.1

Photoshop CS6 (64 Bit)
Photoshop algoritması daha kontrastlı bir görüntü üretirken, hassas algoritma görüntüyü bir miktar "bulanıklaştırır". Ancak genel olarak görsel bir değerlendirmeyle sonuç neredeyse aynıdır. Bu arada Photoshop'ta uygulanan döndürme algoritmasının 10 yılda önemli bir değişikliğe uğramadığını belirtelim.

Test 2
İkinci test için standart Win7 dağıtımından Tulip'i seçtim:

Bu görüntüyü geometrik merkeze göre saat yönünde 5° döndürdükten sonra tüm piksellerin rengini RGB kanalları cinsinden topladım. İşte hassas algoritma ve Photoshop algoritmasının sonucu:
Parantez içindeki sayılar bu göstergenin orijinalinden mutlak sapmasını göstermektedir.
Hassas döndürmeden sonra ve yuvarlamadan önce görüntünün rengi pratikte değişmedi; bu beklenen bir şeydi.
Bu özel durumda en büyük sapmayı Photoshop algoritmasının G kanalında buluyoruz. Yüzde cinsinden bu sapma yalnızca %0,06'dır, dolayısıyla "gözle" farkedilemez, ancak mükemmeliyetçilik nedeniyle Photoshop'un sonucu hassas bir algoritmanınkinden daha kötüdür.
Hassasiyet algoritmasındaki her pikselin renginin BMP formatının gerektirdiği tamsayı değerine yuvarlanmasının renk bilgilerinin bir kısmını geri dönülemez biçimde yok ettiğini unutmamak önemlidir.

İki algoritmanın görsel bir karşılaştırması için görüntünün büyütülmüş bir parçasını vereceğim,

Sırasıyla saat yönünde 5° döndürülmüş, Photoshop:

Ve hassas bir algoritmayla:

Karşılaştırmalı analiz, Photoshop'un görüntünün zıt öğelerini korumada daha iyi olduğunu, ancak aynı zamanda çarpık renk "haloları" yaratmada daha iyi olduğunu gösteriyor. Hassasiyet algoritması rengi bozmaz ancak aynı zamanda görüntüyü bir miktar "bulanıklaştırır".

Sonuçlar

1. Raster görüntünün hassas ve aynı zamanda nispeten hızlı bir şekilde isteğe bağlı bir açıyla döndürülmesi mümkündür. Profesyonel grafik editörlerinin, kullanıcının bir görüntüyü biraz daha kısa sürede son derece hassas bir şekilde döndürmesine olanak tanıyan bir seçeneğe neden sahip olmadığı benim için bir sır olarak kalıyor.

2. Dikkate alınan algoritmanın aşırı doğruluğuna rağmen, görüntünün ters dönüşümü, yani. Kaliteyi kaybetmeden ters açıya döndürmek imkansızdır çünkü tam renk değerinin yuvarlanması (kayan nokta formatında) renk bilgilerinin bir kısmını geri dönülemez biçimde yok eder.

3. Kontrastlı detayların görsel algısı açısından en iyi sonuç, optimal olmayan Photoshop algoritması ile elde edilir. Görüntünün rengiyle ilgili maksimum bilgiyi korumanın önemli olduğu durumlarda hassas bir algoritma kullanmak mantıklıdır.

Güncelleme: Pratik kullanım için, son görüntünün her pikseli için orijinal görüntüdeki gerekli tüm piksel parçalarının sırayla hesaplandığı ve renk yuvarlamanın hemen gerçekleştiği basitleştirilmiş bir algoritma uygulayan bir program yazdım. Ancak bundan sonra son görüntünün bir sonraki pikseli hesaplanır. Bu durumda program, kaynak görüntünün tek bir pikseline birkaç kez erişir. Böylece hesaplama süresi ortalama 1,7 kat arttı, ancak algoritmanın bu sürümündeki bellek yalnızca büyük boyutlu görüntülerle çalışmanıza olanak tanıyan bitmaplerin depolanmasına harcanıyor. Programı ve kaynakları indirebilirsiniz



Makaleyi beğendin mi? Arkadaşlarınızla paylaşın!