2011 Studsvik AB Tony Björkman PANORAMA-BILDTAGNING Filminspelning och visuell inspektion är två beprövade metoder för avsyning av bränslestavar. Ett nytt sätt att avsyna är att skapa panoramabilder vilket kombinerar detaljrikedomen från visuell inspektion med översikten som fås av filminspelning. Ett program för detta har skapats i LabVIEW och det klarar av att mäta ett varv runt staven och av det skapa en sammanhängande bild. 1
Innehåll 1. Inledning... 3 2. Syfte... 3 3. Mål... 3 4. Ordlista...3 1.1 Stitchning av bilder... 4 5. Bakgrund...4 6. Metod... 4 7. Genomförande...5 1.2 Programkörningen...5 1.3 Stitchning... 7 8. Resultat...10 9. Installation...12 2
1. Inledning För tillfället finns det två olika sätt att optiskt avsyna större ytor på en bränslestav inne i HCL: Visuell inspektion med högupplöst Leica kamera och filminspelning med analog lågupplöstkamera. Leica Kameran tar framförallt närbilder på enstaka intressepunkter medans filminspelningen tar löpande bilder över hela stavens yta. Filminspelningen går till på det viset att en stav roteras radiellt och förflyttas axiellt, samtidigt som den filmas, detta gör att projektledare/kunden senare kan se hela staven genom att titta på den ca 20min långa filmen som mätningen skapar. Tidigare har projektledare försökt åstadkomma panoramabilder genom att ta ett fåtal bilder runt om en stav med hjälp av Leica kameran och sedan sammanfoga manuellt i photoshop. Detta har inte fungerat så bra då man måste ta väldigt många småbilder för att undvika det parallaxfel som uppstår när man tar stora bilder(blir mer fel ju större bilder). Att få en komplett bild är intressant vid intresseområden som sträcker sig runt en stav, som tex vid spridare. Tanken med Panorama-Drama är att automatiskt skapa en högupplöst bild av hela stavens yta som komplement eller för att helt ersätta en hel filminspelning. 2. Syfte Skapa ett mätsystem som ger högupplösta bilder med hög exakthet och skalangivelse på bränslestavar. Ge en direkt översiktsbild av hela staven istället för att som med filmning att man bara får se små delar åt gången. 3. Mål Riggen ska ta högupplösta bilder ett helt varv runt en bränslestav och sammanfoga dessa till en sammanhängande bild. Storleken på de enskilda bilderna ska kunna väljas fritt. En exakt skala som anger vinkelposition ska ritas ut vid sidan av bilderna. Överlappningen ska ritas ut tillsammans med skalan för att enklare upptäcka avvikelser i stitchningen. 4. Ordlista Stitch Samma som merge. En process där man sätter ihop två bilder sida vid sida eller svagt överlappande för att skapa en större bild. Målet är att få de två enskilda bilderna att se ut som en. Merge-match Påhittad term för att beskriva hur väl de två bilderna ser ut att passa ihop. Överlapp-mängd Hur många pixlar som de två bilderna måste överlappa för att skapa en sömlös stitch. 3
Previous-score Värdet på överlapp-mängden vid föregående stitch. 5. Bakgrund 1.1 Stitchning av bilder Med stitchning menas att man tar flera bilder och sammanfogar till en stor. Varje enskild bild måste delvis överlappa en annan bild för att det ska gå att ta reda på exakt var någonstans bilderna ska sättas ihop. När man gör panorama på bränslestavar är staven monterad i en chuck med mycket exakt position och vinkelavläsning. Tack vare den angivelsen finns det två sätt att veta var bilderna ska sättas ihop med varandra: Utgå från att ett visst antal grader motsvarar ett visst antal pixlar på bilden. Utifrån bildens storlek vet man då hur mycket man ska vrida staven tills nästa bild. Man analyserar bilderna på pixelnivå och ser vid vilken position på bildöverlappningen som det är minst skillnad mellan överlappande pixlars värde. Nackdelen med första alternativet, att vrida ett bestämt antal grader, är att ett litet fel på pixlar/grad kommer växa sig större och större och ge en tydlig förskjutning mellan bilderna. Med alternativ 2 som är mycket mera komplicerat är nackdelen att det är inte alltid man kommer kunna hitta bra sammanfogningspunkter. Detta sker när de två bilderna är mycket lika över hela sin yta. Tex fallet med en helt slät enfärgad stav. 6. Metod 4
För att nå målen görs ett program i LabVIEW och den hårdvara som kommer behövas köps in löpande allteftersom projektet utvecklas. Arbetet utförs på plats nere i HCL med tillgång till kameror och riggen inne i hotcell som används för visuell inspektion och filminspelning. Inköps görs med godkännande av Håkan Jansson och verkställs av IT-Avdelningen. 7. Genomförande 1.2 Programkörningen I första hand ska automatisk stitch(alt. 2) användas och om ingen bra sammanfogningsplats hittas kommer statisk stitch(alt. 1) att användas. Bilderna flyttas alltså ihop. Antalet pixel-rader som bilderna överlappar varandra kallas hädanefter för överlapps-mängd. Olika överlapps-mängd kommer ge olika bra matchningar mellan pixelvärde. Hur väl denna matchning sker kallas hädanefter för merge-match. Eftersom staven rör sig lika många grader mellan bilderna ska alla bilder teoretiskt sett stitchas på samma överlapps-mängd. Men det är inte alltid en bra match kommer ske. Detta upptäcks genom att överlapps-mängd skiljer sig mellan nuvarande bilds överlapps-mängd och föregående bilds överlapps-mängd. Denna skillnad mellan nuvarande och föregående kallas för previous-score. Första gången man gör en merge, ska man ha möjlighet att flytta pixel-position manuellt. På resterande bilder kommer previous-score kontrolleras så att den håller sig innanför en viss tolerans. Ifall previous-score är utanför toleransen kommer den nya bilden placeras enligt förra pixel-position och helt bortse ifrån merge-match-värdet. Figur 1: Beskrivning av hur tre bilder stitchas 1. Första som behövs göras är att veta hur långt staven ska roteras mellan varje bild. Detta gradantal kallas vinkelsteg och beräknas på bildens bredd i pixlar och hela stavens bredd i pixlar. Vinkelsteget blir arcsin( bildbredd/stavbredd ). 2. En första bild tas vid vinkel 0. 3. Sedan kommer staven roteras ett användarinställt antal grader för nästa bild. 4. En till bild tas, tex vid vinkel 2. Denna måste överlappa första bilden. 5
5. Nu kommer automatisk stitchning aktiveras, Bild nr 2 kommer att överlappas med Bild nr1 och man kommer få finna den bildposition där de överlappande bitarnas pixlar matchar varandra. 6. Eftersom detta är första stitchningen som görs, och dess överlapp-mängd kommer sparas och ev. användas vid nästa stitch är det viktigt att den är korrekt. Därför kommer man alltid ha möjlighet att justera stitchen manuellt. Man behöver trycka nästa bild när man är klar med justeringen. När bild 1 och bild 2 sammanfogats vet man avståndet i pixlar(överlapps-mängd) som ger en bra sammanfogning. Efter de två första bilderna är tagna ska resten av panoramabyggandet ske automatiskt. 7. Staven roteras nu enligt tidigare bestämt vinkelsteg. 8. Bild nr3 tas på vinkel 4. 9. Automatisk stitchning. När positionen erhållits kan man jämnföra skillnaden i överlapps-mängd mellan bild1 och bild2. Den ska vara samma som bild2 och bild3. Ifall det skiljer för mycket från föregående stitch kommer bilden stitchas med samma överlapp som föregående, då sker steg 9 som det står om nedan. 10. Man vet antalet pixlar man lät bilderna1 och 2 överlappas. Samma överlappning ska då ske för bild3. 6
1.3 Stitchning Figur 2: Hur en bild omvandlas till en array Två bilder ska sammanfogas på sådant sätt att den överlappande delen från båda bilderna är så lika som möjligt. För att kunna undersöka detta görs bilderna om till arrayer, hur detta ser ut illustreras i Figur 2. Dessa värden motsvarar pixelns färg och deras position i arrayen motsvarar deras position i bilden. Sedan ska dessa två arrayer jämföras och hur detta löses visas nedan i Figur 3. Botten1 och top1 är de två bilderna i arrayform. Själva jämförelsen sker inne i den Sub-VI dit bott-overlap och top-overlap leder. Resultatet blir ett 64bitars tal. 7
Figur 3: Källkod för merge-match Därefter tar man ut x-antal av de nedersta array-raderna från den övre bilden och lika många array-rader från övre delen av den nedre bilden. Dessa två sub-arrayers värden jämförs sedan genom att man subtraherar färgvärderna mot varandra. Ju närmare 0 differensen är desto mer lika är pixlarna. För att veta hur många raders överlappning som ger den bästa matchningen måste alla rader testas på detta vis. Eftersom vi vet med vilket vinkelavstånd vi tar bilderna så vet vi på ett ungefär var någonstans denna matchning bör ske. Därför behövs inte hela bilderna undersökas utan endast ett viss antal rader in där de möts. Figur 4: Visar skalan på en panoramabild När bilderna sammanfogats visas en skala till höger om bilderna. Där visas det hur överlappningen är gjord samt vid vilken vinkel som de enskilda bilderna är tagna. 8
Detta görs enkelt genom att använda LabVIEWs funktioner för att rita streck och text direkt på bilder. Figur 4 visar hur detta ser ut, de vita siffrorna är vinkeln och den gröna är överlapps-mängden. Test1 Vid stresstest visar det sig att det största panoramat som programmet klarar att skapa är 3837x595pixlar. Detta av ca 8 bilder från analoga kameran. Ett panorama taget på en penna gav en bild på 980x550pxl. Nedan visas en förminskad version av den bilden: Figur 5: första lyckade panoramat 9
8. Resultat Figur 6: GUI/frontpanel på LabVIEW programmet Figur 7: översiktsbild på en liten del av källkoden 10
Figur 8: 360grader panoramabild på rör med repor inne i hotcell 11
9. Installation Installera LabVIEW 2010 och Vision development module Installera drivrutin till AVT kameran (AVT universalpack) Koppla in kameran och se till att den syns i enhetshanteraren. Troligtvis behövs det bytas drivrutin till firewirekortet, gör detta med busdriver programmet som ingår i universalpack. Se till att kameran dyker upp i measurement & automation explorer, ställ in dess inställningar där. Framförallt color correction är viktigt. Sedan ska det gå att köra LabVIEW mjukvarorna. Bruksanvisning Kamera Innan programmet körs kan man behöva ställa in vilken kamera som ska användas. Möjliga Kameror visas i en rulllist på frontpanelen. Mer information och inställningar för dessa kameror finns i Measurement & Automation -> my devices -> NI-IMAQ. För att starta programmet trycker man på kör-pilen eller Operate-> run. Bildstorlek och stavbredd När programmet är igång ställer man in storleken på de enskilda bilderna samt bredden på staven. Bildstorleken väljs genom att trycka på ROI-bild-knappen och sedan markera en rektangel direkt på bilden från kameran.denna rektangel bör ha centrum på mitten av staven för att skalan som läggs in i panoramabilden ska bli korrekt. Stavbredden markeras som en linje som ska gå från radiella toppen av staven till radiella botten. Utifrån höjden på ROI-bilden relativt höjden på staven så görs en grov beräkning för hur långt staven ska roteras mellan varje bild. Vinkelangivelse Därefter ställer man in om ett helt eller bara delar av ett varv ska mätas. Detta görs på kompassen. Manuell kalibrering av bildöverlapp När detta är gjort kan bildtagning påbörjas. Efter de två första bilderna är tagna kommer körningen att stanna upp och invänta godkännande samt ge möjlighet att ändra den första stitchningen. Om denna stitchning inte blir bra så är en trolig förklaring att vinkel-steg mellan bilderna är fel, dvs den går för långt eller för kort. Kan också vara att kameran inte är helt horisontellt monterad. 12
Sedan kan man välja om kommande stitchningar ska göras automatiskt eller manuellt. Detta väljs med manuell stitch kryssboxen. Ifall körningen inte är manuell är det viktigt att välja tillåten varians från föregående stitch s överlapp-mängd. Detta görs på tolerans-kontrollen. När körningen är klar väljer man var man ska spara resultatbilden. 13