Tractament i publicació d'imatge i vídeo - Pràctica 3

download Tractament i publicació d'imatge i vídeo - Pràctica 3

of 31

description

Pràctica 3 de l'assignatura Tractament i publicació d'imatge i vídeo del grau multimèdia de la UOC.

Transcript of Tractament i publicació d'imatge i vídeo - Pràctica 3

  • Tractament i publicaci dimatge i vdeo

    Jaume Reig Carrascosa

    Tercera Prctica dAvaluaci Continuada (Prctica 3)

    Estudis dInformtica, Multimdia i Telecomunicaci. Grau de Multimdia

  • 1. Realitza un programa en ActionScript que sobre la mateixa imatge que vau escollir per a lactivitat 1 de la primera prctica realitzi les segents transformacions lineals:

    a. Dos binaritzacions, amb dos llindars diferents.b. Un negatiu.De manera que el resultat es mostri sobre una mateixa nestra dividida en quatre, on a

    ms deles imatges resultats es mostri es la imatge original.

    a. Dos binaritzacions, amb dos llindars diferents.

    import ash.display.BitmapData;

    bitmapA = BitmapData.loadBitmap(enum1);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var bitmapB:BitmapData = new BitmapData(256, 256, false, 0x999999);

    llindar = 134;

    for (i = 0; i

  • }

    color = gris * 256*256 + gris * 256 + gris;

    bitmapB.setPixel(i,j,color);

    }

    }

    createEmptyMovieClip(imatgeB,this.getNextHighestDepth());

    imatgeB.attachBitmap(bitmapB,this.getNextHighestDepth());

    imatgeB._x=256;

    /* binaritzaci llindar =134 */

    bitmapC = bitmapA.clone();

    var bitmapD:BitmapData = new BitmapData(256, 256, false, 0x999999);

    llindar = 100;

    for (i = 0; i

  • b. Un negatiu.

    import ash.display.BitmapData;

    bitmapA = BitmapData.loadBitmap(enum1);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var bitmapB:BitmapData = new BitmapData(256, 256, false, 0x999999);

    llindar = 134;

    for (i = 0; i

  • 2. Programa una funci capa de donar com a resultat la comparativa de la modi caci delnivell de bits per pxel de color duna imatge (lliure elecci) amb tres nivells diferents.

    import ash.display.BitmapData;

    bitmapA = BitmapData.loadBitmap(blakeyed);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    /* 4 i 3 */

    var bitmapB:BitmapData = new BitmapData(256, 256, false, 0x999999);

    nbitsRG = 4;

    nbitsB = 3;

    for (i = 0; i= 16;

    G = bitmapA.getPixel(i,j) & 0x00FF00;

    G >>= 8;

    B = bitmapA.getPixel(i,j) & 0x0000FF;

    R >>= (8-nbitsRG);

    R = (8-nbitsRG);

    Arxiu Flash: 2-nivells. a

    4

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    5

  • G = (8-nbitsB);

    B = 8;

    B = bitmapA.getPixel(i,j) & 0x0000FF;

    R >>= (8-nbitsRG);

    R = (8-nbitsRG);

    G = (8-nbitsB);

    B = 8;

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    6 7

  • B = bitmapA.getPixel(i,j) & 0x0000FF;

    R >>= (8-nbitsRG);

    R = (8-nbitsRG);

    G = (8-nbitsB);

    B

  • 3. Programeu en ActionScript la transformaci en pseudocolor realitzada en la primera prctica del curs.

    import ash.display.BitmapData;

    var RGB:Array = new Array();

    var llindar:Array = new Array(64, 128, 192);

    var Nmin:Array = new Array(0, 0, 0)

    var Nmax:Array = new Array(255, 255, 255)

    var bitmapB:BitmapData = new BitmapData(512, 636, false, 0x999999);

    bitmapA = BitmapData.loadBitmap(radiogra a);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    for (i = 0; i= 16;

    RGB[1] = bitmapA.getPixel(i,j) & 0x00FF00;

    RGB[1] >>= 8;

    RGB[2] = bitmapA.getPixel(i,j) & 0x0000FF;

    Arxiu Flash: 3-pseudocolor. a

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    8 9

  • 4. En la 1 prctica exercici 7 apliquem diferents ltres a mida sobre una imatge a destu-diar les transformacions espacials lineals. Generar un programa en ActionScript que realitzi aquest mateix exercici, on cada una de les transformacions es mostrin en nestres diferents (o compartides a 4 per nestra).

    for (l=0; l llindar[l]){

    RGB[l] = Nmax[l];}

    else{

    RGB[l] = Nmin[l];

    }

    }

    color = RGB[0] * 256 * 256 + RGB[1] * 256 + RGB[2];

    bitmapB.setPixel(i,j,color);

    }

    }

    createEmptyMovieClip(imatgeB,this.getNextHighestDepth());

    imatgeB.attachBitmap(bitmapB,this.getNextHighestDepth());

    imatgeB._y=318;

    dispose(bitmapA);

    dispose(bitmapB);

    Arxiu Flash: 4-contorns-verticals-horitzontals. a

    8

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    9

  • import ash.display.BitmapData;

    bitmapA = BitmapData.loadBitmap(enum7);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    import ash. lters.ConvolutionFilter;

    import ash.geom.Rectangle;

    import ash.geom.Point;

    bitmapC = bipmapA.clone();

    /* contorns horitzontals */

    var dimX:Number = 3;

    var dimY:Number = 3;

    var matriu:Array = [-1, -2, -1, 0, 0, -0, 1, 2, 1];

    var divisor:Number = 1;

    var biaix:Number = 128;

    var mascara: ConvolutionFilter = new ConvolutionFilter(dimX, dimY, matriu, divisor, biaix);

    var bitmapB:BitmapData = new BitmapData(256, 256, false, 0x999999);

    bitmapB.applyFilter(bitmapA, bitmapA.rectangle, new Point(0, 0), mascara);

    /* contorns verticals */

    var dimX:Number = 3;

    var dimY:Number = 3;

    var matriu:Array = [-1, 0, 1, -1, 0, 1, -1, 0, 1];

    var divisor:Number = 1;

    var biaix:Number = 128;

    var mascara: ConvolutionFilter = new ConvolutionFilter(dimX, dimY, matriu, divisor, biaix);

    var bitmapD:BitmapData = new BitmapData(256, 256, false, 0x999999);

    bitmapD.applyFilter(bitmapA, bitmapA.rectangle, new Point(0, 0), mascara);

    bitmapC = bitmapA.clone();

    createEmptyMovieClip(imatgeC, this.getNextHighestDepth());

    imatgeC.attachBitmap(bitmapC, this.getNextHighestDepth());

    /* colocar movieclips */

    createEmptyMovieClip(imatgeB,this.getNextHighestDepth());

    imatgeB.attachBitmap(bitmapB,this.getNextHighestDepth());

    imatgeB._x=256;

    createEmptyMovieClip(imatgeC,this.getNextHighestDepth());

    imatgeC.attachBitmap(bitmapC,this.getNextHighestDepth());

    imatgeC._y=256;

    createEmptyMovieClip(imatgeD,this.getNextHighestDepth());

    imatgeD.attachBitmap(bitmapD,this.getNextHighestDepth());

    imatgeD._y=256;

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    10 11

  • imatgeD._x=256;

    dispose(bitmapA);

    dispose(bitmapB);

    dispose(bitmapC);

    dispose(bitmapD);

    import ash.display.BitmapData;

    bitmapA = BitmapData.loadBitmap(enum7);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    import ash. lters.ConvolutionFilter;

    import ash.geom.Rectangle;

    import ash.geom.Point;

    bitmapC = bipmapA.clone();

    /* contorns globals */

    var dimX:Number = 3;

    var dimY:Number = 3;

    var matriu:Array = [-1, -1, -1, -1, 8, -1, -1, -1, -1];

    var divisor:Number = 1;

    var biaix:Number = 128;

    var mascara: ConvolutionFilter = new ConvolutionFilter(dimX, dimY, matriu, divisor, biaix);

    var bitmapB:BitmapData = new BitmapData(256, 256, false, 0x999999);

    Arxiu Flash: 4-contorns-globals-diagonals. a

    10

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    11

  • bitmapB.applyFilter(bitmapA, bitmapA.rectangle, new Point(0, 0), mascara);

    /* contorns diagonals */

    var dimX:Number = 3;

    var dimY:Number = 3;

    var matriu:Array = [-1, -1, 2, -1, 2, -1, 2, -1, -1];

    var divisor:Number = 1;

    var biaix:Number = 128;

    var mascara: ConvolutionFilter = new ConvolutionFilter(dimX, dimY, matriu, divisor, biaix);

    var bitmapD:BitmapData = new BitmapData(256, 256, false, 0x999999);

    bitmapD.applyFilter(bitmapA, bitmapA.rectangle, new Point(0, 0), mascara);

    bitmapC = bitmapA.clone();

    createEmptyMovieClip(imatgeC, this.getNextHighestDepth());

    imatgeC.attachBitmap(bitmapC, this.getNextHighestDepth());

    /* colocar movieclips */

    createEmptyMovieClip(imatgeB,this.getNextHighestDepth());

    imatgeB.attachBitmap(bitmapB,this.getNextHighestDepth());

    imatgeB._x=256;

    createEmptyMovieClip(imatgeC,this.getNextHighestDepth());

    imatgeC.attachBitmap(bitmapC,this.getNextHighestDepth());

    imatgeC._y=256;

    createEmptyMovieClip(imatgeD,this.getNextHighestDepth());

    imatgeD.attachBitmap(bitmapD,this.getNextHighestDepth());

    imatgeD._y=256;

    imatgeD._x=256;

    dispose(bitmapA);

    dispose(bitmapB);

    dispose(bitmapC);

    dispose(bitmapD);

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    12 13

  • 5. Realitza el programa en ActionScript amb les combinacions de transformacions espaci-als lineals i no lineals necessries per resoldre lexercici 3 de la prctica 2:b) eliminar el mxim possible els cables del cartell: h11690_a.jpgd) allar la forma del microorganisme el mxim possible: microorg.jpg

    b) eliminar el mxim possible els cables del cartell: h11690_a.jpg

    import ash.display.BitmapData;

    var EE:Array = new Array(0, 0, 0, 1, 1, 1, 0, 0, 0);

    dimEEx = 3;

    dimEEy = 3;

    bitmapA = BitmapData.loadBitmap(h11690_a);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var bitmap_temp:BitmapData = erosio(dimEEx, dimEEy, EE, bitmapA);

    var bitmapB:BitmapData = dilatacio(dimEEx, dimEEy, EE, bitmap_temp);

    createEmptyMovieClip(imatgeB,this.getNextHighestDepth());

    imatgeB.attachBitmap(bitmapB,this.getNextHighestDepth());

    imatgeB._x=256;

    dispose(bitmapA);

    dispose(bitmapB);

    function dilatacio(dimEEx:Number, dimEEy:Number, EE:Array, bitmap_in:BitmapData) {

    var bitmap_out:BitmapData = new BitmapData(bitmap_in.width, bitmap_in.height, false, 0x999999);

    Arxiu Flash: 5-B-eliminar-cables. a

    12

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    13

  • var regio:Array = new Array();

    N = dimEEx * dimEEy;

    L = (dimEEx-1)/2;

    K = (dimEEy-1)/2;

    for (i = 0; i

  • d) allar la forma del microorganisme el mxim possible: microorg.jpg

    regio[r] = bitmapA.getPixel(i+k,j+l) & 0x0000FF;

    r = r+1;

    }

    }

    min=255;

    for(r=0; r

  • 6. Programeu les transformacions geomtriques en ActionScript segents, de manera qu el resultat aparegui en nestres diferents. Utilitzar una imatge lliure sobre la qual aplicar-les:a. Zoom de factor 4.b. Translacic. Rotacid. Delmaci de factor 3.e. La composici de b, c, i d.

    import ash.display.BitmapData;

    bitmapA = BitmapData.loadBitmap(celula);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var bitmapB:BitmapData = new BitmapData(211, 214, false, 0x999999);

    llindar = 203;

    bin_min = 90; /* el nivell ms fosc de la imatge */

    bin_max = 245; /* el nivell ms clar */

    for (i = 0; i

  • a. Zoom de factor 4.

    import ash.display.BitmapData;

    import ash.geom.Matrix;

    import ash.geom.Transform;

    bitmapA = BitmapData.loadBitmap(cam1);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var transformacioA:Transform = new Transform(imatgeA);

    var matriuT:Matrix = new Matrix();

    matriuT.scale(4, 4);

    transformacioA.matrix = matriuT;

    dispose(bitmapA);

    Arxiu Flash: 6-A-zoom. a

    16

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    17

  • b. Translaci

    import ash.display.BitmapData;

    import ash.geom.Matrix;

    import ash.geom.Transform;

    bitmapA = BitmapData.loadBitmap(cam1);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var transformacioA:Transform = new Transform(imatgeA);

    var matriuT:Matrix = new Matrix();

    matriuT.translate(150, 150);

    transformacioA.matrix = matriuT;

    dispose(bitmapA);

    Arxiu Flash: 6-B-traslacio. a

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    18 19

  • c. Rotaci

    import ash.display.BitmapData;

    import ash.geom.Matrix;

    import ash.geom.Transform;

    bitmapA = BitmapData.loadBitmap(cam1);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    imatgeA._x = 53;

    imatgeA._y = 53;

    var transformacioA:Transform = new Transform(imatgeA);

    var matriuT:Matrix = new Matrix();

    angle = 45;

    matriuT.rotate(Math.PI*angle/180);

    transformacioA.matrix = matriuT;

    imatgeA._x = 200;

    imatgeA._y = 130;

    dispose(bitmapA);

    Arxiu Flash: 6-C-rotacio. a

    18

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    19

  • d. Delmaci de factor 3.

    import ash.display.BitmapData;

    import ash.geom.Matrix;

    import ash.geom.Transform;

    bitmapA = BitmapData.loadBitmap(cam1);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var transformacioA:Transform = new Transform(imatgeA);

    var matriuT:Matrix = new Matrix();

    matriuT.scale(0.33, 0.33);

    transformacioA.matrix = matriuT;

    dispose(bitmapA);

    Arxiu Flash: 6-D-delmacio. a

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    20 21

  • e. La composici de b, c, i d.

    import ash.display.BitmapData;

    import ash.geom.Matrix;

    import ash.geom.Transform;

    bitmapA = BitmapData.loadBitmap(cam1);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var transformacioA:Transform = new Transform(imatgeA);

    var matriuT:Matrix = new Matrix();

    matriuT.scale(0.33, 0.33);

    angle = 45;

    matriuT.rotate(Math.PI*angle/180);

    matriuT.translate(150, 150);

    transformacioA.matrix = matriuT;

    dispose(bitmapA);

    Arxiu Flash: 6-E-composicio. a

    20

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    21

  • 7. A lexercici 8-A, de la segona prctica es demanava dobtenir els contorns de les lletres de la matrcula per a la imatge matrcula.jpg. Programeu les transformacions usades per obte-nir-los de manera que les imatges resultants siguin en diferents nestres:a) Fons negre i contorns en blanc, usant transformacions espacials lineals.b) Fons negre i contorns en blanc, usant transformacions espacials NO lineals.c) Fons blanc i contorns en negre, usant transformacions espacials no lineales i puntuals.d) Finestra compartida pels tres resultats ms la imatge original, per mostrar lacomparativa dels resultats obtinguts a lexercici.

    a) Fons negre i contorns en blanc, usant transformacions espacials lineals.

    iimport ash.display.BitmapData;

    import ash. lters.ConvolutionFilter;

    import ash.geom.Rectangle;

    import ash.geom.Point;

    var dimX:Number = 3;

    var dimY:Number = 3;

    var matriu:Array = [-1, -1, -1, -1, 8, -1, -1, -1, -1];

    var divisor:Number = 1;

    var biaix:Number = 0; /* de 0 a 255 nivells 0 s negre*/

    var mascara: ConvolutionFilter = new ConvolutionFilter(dimX, dimY, matriu, divisor, biaix);

    var bitmapB:BitmapData = new BitmapData(256, 256, false, 0x999999);

    bitmapA = BitmapData.loadBitmap(matricula);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    bitmapB.applyFilter(bitmapA, bitmapA.rectangle, new Point(0, 0), mascara);

    Arxiu Flash: 7-A-transformacio-lineal. a

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    22 23

  • b) Fons negre i contorns en blanc, usant transformacions espacials NO lineals.

    createEmptyMovieClip(imatgeB,this.getNextHighestDepth());

    imatgeB.attachBitmap(bitmapB,this.getNextHighestDepth());

    imatgeB._x=256;

    dispose(bitmapA);

    dispose(bitmapB);

    import ash.display.BitmapData;

    var EE:Array = new Array(1, 1, 1, 1, 1, 1, 1, 1, 1);

    dimEEx = 3;

    dimEEy = 3;

    bitmapA = BitmapData.loadBitmap(matricula);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var bitmapB:BitmapData = new BitmapData(256, 256, false, 0x999999);

    var bitmap_temp:BitmapData = erosio(dimEEx, dimEEy, EE, bitmapA);

    /* restem la imatge original per lerosinada*/

    for (i = 0; i

  • bitmapB.setPixel(i,j,color);

    }

    }

    createEmptyMovieClip(imatgeB,this.getNextHighestDepth());

    imatgeB.attachBitmap(bitmapB,this.getNextHighestDepth());

    imatgeB._x=256;

    dispose(bitmapA);

    dispose(bitmapB);

    dispose(bitmap_temp);

    function erosio(dimEEx:Number, dimEEy:Number, EE:Array, bitmap_in:BitmapData) {

    var bitmap_out:BitmapData = new BitmapData(bitmap_in.width, bitmap_in.height, false, 0x999999);

    var regio:Array = new Array();

    N = dimEEx * dimEEy;

    L = (dimEEx-1)/2;

    K = (dimEEy-1)/2;

    for (i = 0; i

  • c) Fons blanc i contorns en negre, usant transformacions espacials no lineales i puntuals.

    import ash.display.BitmapData;

    var EE:Array = new Array(1, 1, 1, 1, 1, 1, 1, 1, 1);

    dimEEx = 3;

    dimEEy = 3;

    bitmapA = BitmapData.loadBitmap(matricula);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var bitmapB:BitmapData = erosio(dimEEx, dimEEy, EE, bitmapA);

    /* aqui apliquem una binaritzaci */

    llindar = 113;

    for (i = 0; i

  • imatgeB.attachBitmap(bitmapB,this.getNextHighestDepth());

    imatgeB._x=256;

    dispose(bitmapA);

    dispose(bitmapB);

    function erosio(dimEEx:Number, dimEEy:Number, EE:Array, bitmap_in:BitmapData) {

    var bitmap_out:BitmapData = new BitmapData(bitmap_in.width, bitmap_in.height, false, 0x999999);

    var regio:Array = new Array();

    N = dimEEx * dimEEy;

    L = (dimEEx-1)/2;

    K = (dimEEy-1)/2;

    for (i = 0; i

  • d) Finestra compartida pels tres resultats ms la imatge original, per mostrar la compara-tiva dels resultats obtinguts a lexercici.

    Arxiu Flash: 7-D-no-combinacio. a

    26

    UOC. Estudis dInformtica, Multimdia i Telecomunicaci. Grau de MultimdiaTractament i publicaci dimatge i vdeo. 1er semestre 2011-2012. Prctica 3 Jaume Reig Carrascosa

    27

  • import ash.display.BitmapData;

    import ash. lters.ConvolutionFilter;

    import ash.geom.Rectangle;

    import ash.geom.Point;

    bitmapA = BitmapData.loadBitmap(matricula);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    /* transformaci lineal mascara laplaciana detectora contorns 3 */

    var dimX:Number = 3;

    var dimY:Number = 3;

    var matriu:Array = [-1, -1, -1, -1, 8, -1, -1, -1, -1];

    var divisor:Number = 1;

    var biaix:Number = 0; /* de 0 a 255 nivells 0 s negre*/

    var mascara: ConvolutionFilter = new ConvolutionFilter(dimX, dimY, matriu, divisor, biaix);

    var bitmapB:BitmapData = new BitmapData(260, 153, false, 0x999999);

    bitmapA = BitmapData.loadBitmap(matricula);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    bitmapB.applyFilter(bitmapA, bitmapA.rectangle, new Point(0, 0), mascara);

    /* transformacio no lineal tancament */

    var EE:Array = new Array(1, 1, 1, 1, 1, 1, 1, 1, 1);

    dimEEx = 3;

    dimEEy = 3;

    bitmapA = BitmapData.loadBitmap(matricula);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var bitmapC:BitmapData = new BitmapData(260, 153, false, 0x999999);

    var bitmap_temp:BitmapData = erosio(dimEEx, dimEEy, EE, bitmapA);

    /* restem la imatge original per lerosinada*/

    for (i = 0; i

  • }function erosio(dimEEx:Number, dimEEy:Number, EE:Array, bitmap_in:BitmapData) {

    var bitmap_out:BitmapData = new BitmapData(bitmap_in.width, bitmap_in.height, false, 0x999999);

    var regio:Array = new Array();

    N = dimEEx * dimEEy;

    L = (dimEEx-1)/2;

    K = (dimEEy-1)/2;

    for (i = 0; i

  • llindar = 113;

    for (i = 0; i

  • 8. (Opcional, per pujar nota) Escriu el codi que seria necessari usar per programar enActionScript les segents corbes de modi caci de contrast:

    import ash.display.BitmapData;

    bitmapA = BitmapData.loadBitmap(venice);

    createEmptyMovieClip(imatgeA, this.getNextHighestDepth());

    imatgeA.attachBitmap(bitmapA, this.getNextHighestDepth());

    var bitmapB:BitmapData = new BitmapData(256, 256, false, 0x999999);

    llindar1 = 60;

    llindar2 = 200;

    gris1 = 75;

    gris2 = 255;

    for (i = 0; i