2017-09-12, 11:51 PM
(This post was last modified: 2017-09-13, 03:14 AM by BronzeTitan.
Edit Reason: typos
)
(2017-09-11, 07:30 PM)Beetwaaf Wrote: Could one not just write a Avisynth script?
Yes and that's fairly easy to do, too. It's how I extracted the fields for my demonstration (to treat the 5 frames I captured as a video).
Code:
##=================
## GITS frames numbered / progressive reconstruction test
##=================
## Video/frame files path & name
## ----------
snap01 = "GITS frame 1.png"
snap02 = "GITS frame 2.png"
snap03 = "GITS frame 3.png"
snap04 = "GITS frame 4.png"
snap05 = "GITS frame 5.png"
## Get video/frames
## ----------
capture01 = ImageSource( snap01 ).trim( 0,-1 )
capture02 = ImageSource( snap02 ).trim( 0,-1 )
capture03 = ImageSource( snap03 ).trim( 0,-1 )
capture04 = ImageSource( snap04 ).trim( 0,-1 )
capture05 = ImageSource( snap05 ).trim( 0,-1 )
## separate frames into fields
## assume scanlines top-down & even-odd
## NTSC assumed to be upper field first
## PAL assumed to be lower field first
## ----------
## 01_E/01_O
## 02_E/02_O
## 04_E/03_O
## 05_E/05_O
## ----------
field01_E = capture01.SeparateFields().trim( 0,-1 ) # get 1st separation - even field
field01_O = capture01.SeparateFields().trim( 1,0 ) # get 2nd separation - odd field
field02_E = capture02.SeparateFields().trim( 0,-1 )
field02_O = capture02.SeparateFields().trim( 1,0 )
field03_E = capture03.SeparateFields().trim( 0,-1 )
field03_O = capture03.SeparateFields().trim( 1,0 )
field04_E = capture04.SeparateFields().trim( 0,-1 )
field04_O = capture04.SeparateFields().trim( 1,0 )
field05_E = capture05.SeparateFields().trim( 0,-1 )
field05_O = capture05.SeparateFields().trim( 1,0 )
## re-combine fields
## ----------
progr01 = ( field01_E + field01_O ).Weave()
progr02 = ( field02_E + field02_O ).Weave()
# Just in case of different standards ..
# .. frame 3 combined from field04_E & field03_O
progr03_4E3O = ( field04_E + field03_O ).Weave()
# .. OR frame 3 combined from field03_E & field04_O
progr03_3E4O = ( field03_E + field04_O ).Weave()
progr04 = ( field05_E + field05_O ).Weave()
## display as video
## last uncommented group/line is the one that displays
## ----------
## show separated fields
( field01_E.SubTitle( "frame 1 field Even", align=2 )
\ +field01_O.SubTitle( "frame 1 field Odd ", align=2 )
\ +field02_E.SubTitle( "frame 2 field Even", align=2 )
\ +field02_O.SubTitle( "frame 2 field Odd ", align=2 )
\ +field03_E.SubTitle( "frame 3 field Even", align=2 )
\ +field03_O.SubTitle( "frame 3 field Odd ", align=2 )
\ +field04_E.SubTitle( "frame 4 field Even", align=2 )
\ +field04_O.SubTitle( "frame 4 field Odd ", align=2 )
\ +field05_E.SubTitle( "frame 5 field Even", align=2 )
\ +field05_O.SubTitle( "frame 5 field Odd ", align=2 )
\ ).assumeFPS( 1 )
## show interlaced frames
( capture01 +capture02 +capture03 +capture04 +capture05 ).assumeFPS( 1 )
## show reconstructed progressive frames (use one or the other)
#( progr01 +progr02 +progr03_4E3O +progr04 ).assumeFPS( 1 )
( progr01 +progr02 +progr03_3E4O +progr04 ).assumeFPS( 1 )But I use a paint program to work on those 2 critical, interlaced frames/fields. Avisynth is a little less forth-coming combining frames and it's easier / quicker to do tests in the paint program. Once I get it working in my proof-of-concept, then I can play around trying to get Avisynth to duplicate it.




![[Image: yJA.png]](https://malzo.com/i/2017/09/13/yJA.png)
![[Image: yJa.png]](https://malzo.com/i/2017/09/13/yJa.png)
![[Image: yJp.png]](https://malzo.com/i/2017/09/13/yJp.png)
![[Image: yXN.png]](https://malzo.com/i/2017/09/13/yXN.png)
![[Image: GITS_thru_bronze-colored_glasses.png]](https://s26.postimg.cc/6bitc0q6f/GITS_thru_bronze-colored_glasses.png)

![[Image: GITS_releases_cropping.png]](https://s1.postimg.cc/522u7qhlvh/GITS_releases_cropping.png)