Benvenuto!
Accedi
o
registrati
.
12-12-2019, 05:11:09
Home
CDL Informatica
UniCT
CEA
Prof
Help
Search
Calendar
Login
Register
Forum Informatica Unict
»
Vecchi ordinamenti ad esaurimento
»
Laurea Triennale (D.M. 509/00)
»
Laboratorio di Interazione
(Moderators:
Giovanni Gallo
,
Filippo Stanco
) »
Progetto esame precedente
Pages: [
1
]
Go Down
« precedente
successivo »
Print
Author
Topic: Progetto esame precedente (Read 6879 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
vincenzo86
Forumista
Offline
Gender:
Posts: 505
Progetto esame precedente
«
on:
27-02-2009, 17:41:43 »
Come da oggetto, potreste postare un metodo particolare del progetto? Ossia quello relativo al metodo Funny. Grazie
Logged
Aigor
Forumista Esperto
Offline
Gender:
Posts: 1.184
"Il destino non è una catena, ma un volo."[A.B.]
Re:Progetto esame precedente
«
Reply #1 on:
27-02-2009, 17:48:44 »
Prima di postarlo, prova a farlo, magari ti diamo un aiuto.
Puoi farlo o con l'Affine Transform ( il metodo migliore ) oppure facendo una raster dell'immagine e andando a modificare la matrice.
Logged
"Era d'altronde uno di quegli uomini che amano assistere alla propria vita, ritenendo impropria qualsiasi ambizione a viverla.
Si sarà notato che essi osservano il loro destino nel modo in cui, i più, sono soliti osservare una giornata di pioggia." - Seta,Baricco
vincenzo86
Forumista
Offline
Gender:
Posts: 505
Re:Progetto esame precedente
«
Reply #2 on:
28-02-2009, 09:42:29 »
Io l'ho già fatto nel progetto precedente, solo che non era giusto lo avevo fatto in un altro modo; volevo vedere le differenze dal mio. Grazie
Logged
vincenzo86
Forumista
Offline
Gender:
Posts: 505
Re:Progetto esame precedente
«
Reply #3 on:
01-03-2009, 11:32:09 »
Nel progetto precedente avevo fatto come segue:
Quote
public void Funny(){
//Richiamo una funzione esterna DividiBlocchi a cui affido il partizionamento dell'immagine
DividiBlocchi db=new DividiBlocchi();
// Creo una matrice di BufferedImage in cui si posizionano i 100 rettangoli
BufferedImage I_divisa [][]=db.Dividi(A);
// Creo un'immagine risultato in modo che l'immagine di partenza non venga cancellata
BufferedImage ris=new BufferedImage(A.getWidth(),A.getHeight(),BufferedImage.TYPE_INT_RGB);
WritableRaster rC=ris.getRaster();
int pixel[]=new int[A.getType()*10*10];
//Array di Pixel dell'immagine iniziale di tipo RGB di lunghezza 10* 10 pixel= 100 pixel
// For Annidati per scorrere la matrice
for(int i=0;i<I_divisa.length;i++)
{
for(int j=0;j<I_divisa
.length;j++)
{
try{
//Prelevo dalla matrice i pixel associati al rettangolo 10*10
I_divisa
[j].getRaster().getPixels(0,0,10,10,pixel);
// SetPixels=setta i pixel nell'immagine risultato, dove 10*i e 10*j rappresentano lo spostamento dentro tale immagine
rC.setPixels((10*i),(10*j),10,10,pixel);
}
catch(ArrayIndexOutOfBoundsException e){}
}
}
//L'immagine risultante da tale elaborazione viene qundi visualizzata in un frame a parte
FrameFunny fn=new FrameFunny("Immagine Funny",ris);
}// Fine metodo Funny
Funzione esterna DividiBlocchi: serve per dividere l'immagine in quadrati (a me nn venivano 100 rettangolini ma di più)
Quote
public class DividiBlocchi
{
int h,w;
int hpartizione;
int wpartizione;
public DividiBlocchi()
{
h=10; //Altezza blocchi
w=10; //Larghezza blocchi
}
public BufferedImage[][] Dividi(BufferedImage I)
{
hpartizione=getHPartizione(I); // prendo il valore calcolato dal metodo getHPartizione
wpartizione=getWPartizione(I); // prendo il valore calcolato dal metodo getWPartizione
//Creo
BufferedImage ImmBlocchi [][]=new BufferedImage[wpartizione][hpartizione]; // Creo una nuova BufferedImage con i nuovi valori wpartizione e hpartizione
int r=0,c=0;
// Scorro la matrice con due cicli for annidati che lavorano dalla fine della matrice all'inizio, creando così l'effetto desiderato
for(int i=wpartizione-1;i>=0;i--)
{c=0;
for(int j=hpartizione-1;j>=0;j--)
{
ImmBlocchi
[j]=I.getSubimage(w*r,h*c,w,h);
//SubImage= prende un blocco 10*10 tramite i due cicli, partendo dalla posizione iniziale dell'immagine e trasferendoli alla matrice
c++;
}
r++;
}
return ImmBlocchi;
}
public int getHPartizione(BufferedImage I)
{
return (int)(I.getHeight()/100)*10; //restituisce un blocco che è la decima parte dell'altezza dell'immagine
}
public int getWPartizione(BufferedImage I)
{
return (int)(I.getWidth()/100)*10; //restituisce un blocco che è la decima parte della larghezza dell'immagine
}
}
Questo metodo Funny è fatto agendo poi sui singoli pixel con il Raster.. Potete postare quello con l'AffineTransform?
Grazie
Logged
MissCooper
Apprendista Forumista
Offline
Posts: 181
Re:Progetto esame precedente
«
Reply #4 on:
02-03-2009, 10:42:11 »
allora se non ho interpretato male non devi fare altro che applicare una rotazione di 180gradi ad ogni rettangolino che si ottiene dalla suddivisione dell'immagine in 100rettangoli...tra gli appunti che il prof ha lasciato on line c'è il codice per la rotazione...
Logged
Aigor
Forumista Esperto
Offline
Gender:
Posts: 1.184
"Il destino non è una catena, ma un volo."[A.B.]
Re:Progetto esame precedente
«
Reply #5 on:
02-03-2009, 10:49:34 »
Code:
private void funny()
{
copiaImmagine(originale,immagine);
riquadro(); //Crea riquadro
rivolta(); //Rivolta i quadrati !!
newFrame displayRisultato = new newFrame(immagine_funny,"Funny");
pannello.setImage(originale);
pannello.repaint();
salva.setEnabled(true);
}
//Crea i riquadri 10x10
private void riquadro()
{
int w=immagine.getWidth();
int h=immagine.getHeight();
for(int x=0, i=0; (x+w/10)<=w; x=x+w/10, i++)
for(int y=0, j=0; (y+h/10)<=h; y=y+h/10, j++)
ritaglio[j][i]=immagine.getSubimage(x, y, w/10, h/10);
}
//Rivolta tutti i quadrati
private void rivolta()
{
int w=ritaglio[0][0].getWidth();
int h=ritaglio[0][0].getHeight();
int [] copia = new int[3];
int [] vecchio = new int[3];
immagine_funny= new BufferedImage(w*10,h*10,BufferedImage.TYPE_INT_RGB );
WritableRaster rasterFunny = immagine_funny.getRaster();
for(int x=0; x<10; x++)
for(int y=0; y<10; y++)
for(int i=0;i<h; i++)
for(int j=0; j<w; j++)
{
ritaglio[x][y].getRaster().getPixel(j, i, copia);
ritaglio[x][y].getRaster().getPixel(w-j-1, h-i-1, vecchio);
rasterFunny.setPixel(j+(w*y), i+(h*x), vecchio);
rasterFunny.setPixel(w-j-1,h-i-1,copia);
}
// PER QUALCHE MOTIVO (??) NON FA IL PRIMO QUADRATO !!
// LO SETTO NUOVAMENTE
for(int j=0;j<h; j++)
for(int i=0; i<w; i++)
{
ritaglio[0][0].getRaster().getPixel(i, j, copia);
ritaglio[0][0].getRaster().getPixel(w-i-1, h-j-1, vecchio);
rasterFunny.setPixel(i, j, vecchio);
rasterFunny.setPixel(w-i-1,h-j-1,copia);
}
}
Eccolo !!
Logged
"Era d'altronde uno di quegli uomini che amano assistere alla propria vita, ritenendo impropria qualsiasi ambizione a viverla.
Si sarà notato che essi osservano il loro destino nel modo in cui, i più, sono soliti osservare una giornata di pioggia." - Seta,Baricco
bakks87
Apprendista Forumista
Offline
Posts: 162
Re:Progetto esame precedente
«
Reply #6 on:
02-03-2009, 11:44:55 »
Ragazzi potreste postare un abbozzo di codice che disegni un GRAFICO?
Ci sarebbe parecchio d'aiuto a chi come me si sta esercitanto per il prossimo appello di Laboratorio.
Io ho provato a modificare la classe pannelloIstogramma che il prof.ha messo a disposizione nei suoi appunti, ma cambiando i drawLine e mischiando altre cose ho fatto solo troppa confusione. . .
GRAZIE IN ANTICIPO
Logged
MissCooper
Apprendista Forumista
Offline
Posts: 181
Re:Progetto esame precedente
«
Reply #7 on:
02-03-2009, 11:58:40 »
Il grafico dovrebbe essere così credo...il getHeight()/2 è perchè si richiedeva il livello dei pixel nella riga centrale...
Code:
public void graficocentrale(BufferedImage source)
{
JFrame frame= new JFrame();
int[] red = source.getRaster().getSamples(0,source.getHeight()/2,source.getWidth(),1,0,(int[])(null));
int[] green = source.getRaster().getSamples(0,source.getHeight()/2,source.getWidth(),1,1,(int[])(null));
int[] blue = source.getRaster().getSamples(0,source.getHeight()/2,source.getWidth(),1,2,(int[])(null));;
disegnalinee rosso= new disegnalinee(red);
disegnalinee verde= new disegnalinee(green);
disegnalinee blu= new disegnalinee(blue);
frame.add(rosso,BorderLayout.NORTH);
frame.add(verde, BorderLayout.CENTER);
frame.add(blu, BorderLayout.SOUTH);
rosso.setBackground(Color.RED);
verde.setBackground(Color.GREEN);
blu.setBackground(Color.BLUE);
frame.setVisible(true);
frame.setLocation(new Point(50,50));
frame.setSize(new Dimension(900,600));
rosso.setPreferredSize(new Dimension(300,200));
verde.setPreferredSize(new Dimension(300,200));
blu.setPreferredSize(new Dimension(300,200));
}
Code:
class disegnalinee extends JPanel
{
int[] x;
disegnalinee(int[]a)
{
x=a;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2= (Graphics2D)g;
g2.setStroke(new BasicStroke(2F));
g2.setColor(Color.BLACK);
for(int i=0; i<x.length-1; i++)
g2.drawLine(i, x[i],i+1, x[i+1]);
}
}
Logged
MissCooper
Apprendista Forumista
Offline
Posts: 181
Re:Progetto esame precedente
«
Reply #8 on:
02-03-2009, 16:17:20 »
EDIT...ho preferito modificare il post perchè ho riguardato bene il codice che avevo postato per re-incollare l'immagine e...meglio togliere certi orrori
sorry...work in progress...
«
Last Edit: 02-03-2009, 19:06:06 by MissCooper
»
Logged
vincenzo86
Forumista
Offline
Gender:
Posts: 505
Re:Progetto esame precedente
«
Reply #9 on:
02-03-2009, 16:50:35 »
Aigor ti ringrazio per il codice... Mi è stato utilissimo per capire cosa facesse esattamente tale metodo.. Una cosa sola ti volevo domandare: ritaglio[0[0] da dove li vai a prendere? Grazie
«
Last Edit: 02-03-2009, 17:01:44 by vincenzo86
»
Logged
Pages: [
1
]
Go Up
Print
« precedente
successivo »
Jump to:
Please select a destination:
-----------------------------
Area Ufficiale
-----------------------------
=> Annunci Ufficiali
=> Segreteria Didattica
=> Aiuto, proposte e commenti
=> Stages e progetti finali
=> C.O.F. Centro Orientamento e Formazione
=> Messaggi (d)agli amministratori del forum
-----------------------------
LAUREA TRIENNALE (D.M. 270/04)
-----------------------------
=> I anno
===> Architettura degli Elaboratori, 9 CFU
===> Elementi di Analisi Matematica, 12 CFU
===> Fondamenti di Informatica, 9 CFU
===> Matematica Discreta, 12 CFU
===> Programmazione 1, 9 CFU
===> Programmazione 2, 9 CFU
=> II anno
===> Algoritmi, 9 CFU
===> Basi di Dati, 9 CFU
===> Fisica, 9 CFU
===> Ingegneria del Software, 9 CFU
===> Inglese, 3 e 6 CFU
===> Interazione e Multimedia, 9 CFU
===> Sistemi Operativi, 9 CFU
=> III anno
===> Calcolo Numerico, 6 CFU
===> Formazione Numerica, 6 CFU
===> Introduzione all'Analisi dei Dati, 9 CFU
===> Metodi Matematici e Statistici, 6 CFU
===> Reti di Calcolatori, 9 CFU
===> Tecniche di Programmazione Concorrente e Distribuita, 9 CFU
===> Teoria dell'Informazione e Crittografia, 9 CFU
=> III anno - Materie a scelta (crediti liberi)
===> Computer Forensics, 6 CFU
===> Computer Graphics, 9 CFU
===> Digital Game Development, 6 CFU
===> GPGPU/CUDA, 6 CFU
===> Informatica Musicale, 6 CFU
===> LAP 1: programmazione C/C++ 6 CFU
===> LAP 2: Programmazione Android, 6 CFU
===> Sistemi Centrali, 6 CFU
===> Startup d'impresa e Modelli di Business, 6 CFU
===> Internet Security 9 CFU
===> Social Media Management, 6 CFU
=> Corsi disattivati - Vecchio curriculum
===> E-Commerce, 6 CFU
===> Legislazione Informatica, 6 CFU
===> Teoria della Computabilità, 9 CFU
-----------------------------
LAUREA MAGISTRALE
-----------------------------
=> I ANNO
===> Intelligenza Artificiale e Lab, 9 CFU
===> Algoritmi e Complessità, 9 CFU
===> Computer Vision, 9 CFU
===> Crittografia, 9 CFU
===> Fondamenti e Linguaggi per la Programmazione Distribuita
===> Inglese Scientifico, 3 CFU
===> Metodi analitici per l'informatica, 6 CFU
===> Metodi Matematici per l'Ottimizzazione (Corso Integrato), 12 CFU
===> Multimedia, 9 CFU
===> Sicurezza dei Sistemi Informatici 9 CFU
===> Computer Security, 9 CFU
=> II ANNO
===> Machine Learning 6 CFU
===> Teoria della Computabilità, 9 CFU
===> Analisi e Gestione dei Dati, 9 CFU
===> Compilatori, 9 CFU
===> Computazione Naturale e BioIspirata, 6 CFU
===> Introduzione alla Bioinformatica, 9 CFU
===> Linguaggi Formali e Applicazioni, 9 CFU
===> Logica Computazionale, 9 CFU
===> P2P & Wireless Networks, 9 CFU
===> Pattern Recognition, 9 CFU
===> Sistemi Distribuiti, 9 CFU
===> Sistemi dedicati e laboratorio, 9 CFU
===> Web Reasoning
=> Corsi disattivati - Vecchio curriculum
===> Fisica moderna per l'informatica, 6 CFU
===> Linguaggi di Programmazione, 9 CFU
===> Protocolli di Rete
===> Teoria dei Codici, 6 CFU
-----------------------------
Vecchi ordinamenti ad esaurimento
-----------------------------
=> Laurea Triennale (D.M. 509/00)
===> Algoritmi 1
===> Algoritmi 2
===> Basi Teoriche dell'Informatica
===> Economia Aziendale
===> Fisica 1, 6 CFU
===> Fisica 2, 6 CFU
===> Fisica 3
===> Formazione Analitica 1
===> Formazione Analitica 2
===> Formazione Discreta 1
===> Formazione Discreta 2
===> J2ME
===> Lab. Amministrazione di Sistemi
===> Laboratorio di Interazione
===> Modelli Matematici
===> Multimedia per Dispositivi Mobile
===> Progetto Software
===> Reti 1, 6 CFU
===> Sicurezza dei Sistemi Informatici 1
===> Sistemi Distribuiti 1
===> Teoria dei Grafi
===> Usabilità ed Estetica del Web
===> Web Programming
=> Laurea Specialistica (D.M. 509/00)
===> Algoritmi 3
===> Analisi Numerica
===> Complessità
===> Computabilità
===> Data analysis e management
===> Ingegneria del software 2
===> Linguaggi Formali
===> Metodi algoritmici per l'ottimizzazione combinatoria
===> Programmazione Funzionale
===> Reti di Calcolatori 2
===> Ricerca Operativa
===> Sistemi Distribuiti 2
-----------------------------
Dottorandi
-----------------------------
=> Wall
=> Events
-----------------------------
Area Studenti
-----------------------------
=> Agorà
=> L'angolo del tecnico
=> Il Mercatino degli studenti
=> Software
===> -vecchia catalogazione [sarà rimossa a breve]-
=====> Proprietario
=====> Free Software
=====> Open Source
===> Approfondimenti
===> News
===> Studio
===> Videogiochi
===> Networking e telecomunicazioni
===> Sviluppo
===> Ufficio e produttività
===> Sistemi Operativi
=====> Microsoft Windows
=====> GNU/Linux, Unix e BSD
=====> Mac OS X
=====> Windows Phone
=====> Android
=====> iOS
=====> Altri
===> Eventi, conferenze, concorsi
=> Microsoft Student Partner - Avvisi e informazioni
=> ERASMUS/borse di studio internazionali
Caricamento in corso...