Echter bij deze afbeeldingen is er heel veel 'herhaling'. Ook een uitsnede van de afbeelding laat meetstal meerdere celkernen zien. Ik ga kijken of ik hier iets mee kan door de afbeeldingen in vaste, kleine, gelijke delen op te delen. Bijvoorbeeld delen van 80x80 pixels. Ook de maskers moeten dan uiteraard in het zelfde formaat worden opgesplitst. Hierdoor gaat er geen informatie verloren zoals bij de 'resize' optie wel het geval is. Tevens creƫer ik een veelfout aan afbeeldingen hetgeen voor het trainen van een neuraal netwerk altijd beter is.
Voordat ik dat doe moet ik echter de verschillende masker-afbeeldingen per cel-plaatje samenvoegen. Daar gebruik ik ook weer een geleend algoritme voor. Ik zie echter dat de maskers regelmatig elkaar raken of overlappen. Tevens lijken de maskers iets ruim om de celkernen heen te vallen. Om hieraan iets te doen maak ik een functie die een rand van de maskers weghaalt. Ik verwijder daartoe elke pixel als die een 'zwarte' raakt. Dat is uiteraard een stevige klus. Het lukt mij om die behoorlijk te versnellen door eerst te testen of het wel een witte pixel betreft en vervolgens te testen of de matrix rond de pixel een zwarte pixel bevat. Ik ga hierbij even de mist in omdat ik bij een logische matrix vergelijking verwacht de .any uitgang te moeten gebruiken. Het moet echter de .all zijn.
if img[x,y]!=0 and img[x-1:x+1,y-1:y+1].all() == 0:
h[x,y]=0
Het neemt nog wel even maar uiteindeljk heb ik per preparaat een prachtig samengesteld masker.
Voorbeeld samengesteld masker |
We kunnen nu gaan werken aan het opsplitsen in kleine afbeeldingen zoals hierboven beschreven.
Geen opmerkingen:
Een reactie posten