Exemplo n.º 1
0
        private static MyTiff decodeSubsample(MyCompressTiff myct, MyDeal.ProgressMonitor monitor)
        {
            MyTiff decodeTiff = new MyTiff();
            Bitmap baseImg    = null;

            for (int i = 0; i < myct.baseImg.Count; i++)
            {
                if (myct.baseImg.ElementAt(i) != null)
                {
                    decodeTiff.views.Add(baseImg = new Bitmap(myct.baseImg.ElementAt(i)));
                }
                else
                {
                    Bitmap left  = (Bitmap)decodeTiff.views.Last();
                    Bitmap right = new Bitmap(myct.baseImg.ElementAt(i + 1));
                    baseImg = MyDeal.Interpolation(left, right);
                    decodeTiff.views.Add(baseImg);
                }
                if (monitor != null)
                {
                    monitor.OnValueChanged(new MyDeal.ValueEventArgs()
                    {
                        value = (double)i / myct.baseImg.Count
                    });
                }
            }
            return(decodeTiff);
        }
Exemplo n.º 2
0
        private static MyTiff decodeMotion(MyCompressTiff myct, MyDeal.ProgressMonitor monitor)
        {
            MyTiff       decodeTiff = new MyTiff();
            Bitmap       baseImg    = null;
            MyMotionTiff targetMotion;

            for (int i = 0; i < myct.baseImg.Count; i++)
            {
                if (myct.baseImg.ElementAt(i) != null)
                {
                    decodeTiff.views.Add(baseImg = new Bitmap(myct.baseImg.ElementAt(i)));
                }
                else
                {
                    targetMotion = myct.motionTiff.ElementAt(i);
                    baseImg      = MyMotionTiff.decode(baseImg, targetMotion);
                    decodeTiff.views.Add(baseImg);
                }
                if (monitor != null)
                {
                    monitor.OnValueChanged(new MyDeal.ValueEventArgs()
                    {
                        value = (double)i / myct.baseImg.Count
                    });
                }
            }
            return(decodeTiff);
        }
Exemplo n.º 3
0
        protected virtual void initialForm()
        {
            basicProgress = new MyDeal.ProgressMonitor(progressBar1);
            //openFileDialog Setting
            openFileDialog1                 = new OpenFileDialog();
            openFileDialog1.Filter          = "tif file(*.tiff)|*.01.tiff;*01.*.tiff|my compress file(*.MYCT)|*.MYCT";
            openFileDialog1.Title           = "Select a video file";
            openFileDialog1.CheckFileExists = true;
            openFileDialog1.CheckPathExists = true;

            //initial PSNR Chart
            chart1.ChartAreas.ElementAt(0).AxisX.Minimum  = 0;
            chart1.ChartAreas.ElementAt(0).AxisX.Maximum  = 0;
            chart1.ChartAreas.ElementAt(0).AxisX.Interval = 5;//橫坐標 標籤距
            chart1.ChartAreas.ElementAt(0).AxisY.Minimum  = 0;
            chart1.ChartAreas.ElementAt(0).AxisY.Maximum  = MyDeal.maxPSNR;

            //add psnr
            chart1.Series.Clear();
            Series PSNRSeries = addSeries(seriesIdA, "A PSNR(dB)", Color.Blue);

            chart1.Series.Add(PSNRSeries);

            player = new MyPlayer(pictureBox1);
            player.SideWorkDo.Add(new playCombine(countPSNR));
            player.SideWorkArgs.Add(new object[] { player, chart1, new object[] { seriesIdA } });
        }
Exemplo n.º 4
0
        private static MyTiff decodeBB(MyCompressTiff myct, MyDeal.ProgressMonitor monitor)
        {
            MyTiff decodeTiff = new MyTiff();
            Bitmap dst        = null;

            for (int i = 0; i < myct.baseImg.Count; i++)
            {
                if (i == 0)
                {
                    decodeTiff.views.Add(dst = new Bitmap(myct.baseImg.ElementAt(i)));
                }
                else
                {
                    Bitmap left = (Bitmap)decodeTiff.views.Last();
                    dst = (Bitmap)myct.baseImg.ElementAt(i).Clone();
                    BitmapData leftData = left.LockBits(MyDeal.boundB(left), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
                    BitmapData dstData  = dst.LockBits(MyDeal.boundB(dst), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
                    unsafe
                    {
                        byte *leftPtr  = (byte *)leftData.Scan0;
                        byte *dstPtr   = (byte *)dstData.Scan0;
                        int   skipByte = dstData.Stride - 3 * dstData.Width;
                        for (int y = 0; y < dstData.Height; y++)
                        {
                            for (int x = 0; x < dstData.Width; x++)
                            {
                                if ((dstPtr[0] != dstPtr[1]) || (dstPtr[1] != dstPtr[2]))
                                {
                                    dstPtr[0] = leftPtr[0];
                                    dstPtr[1] = leftPtr[1];
                                    dstPtr[2] = leftPtr[2];
                                }
                                dstPtr  += 3;
                                leftPtr += 3;
                            }
                            dstPtr  += skipByte;
                            leftPtr += skipByte;
                        }
                    }
                    left.UnlockBits(leftData);
                    dst.UnlockBits(dstData);
                    decodeTiff.views.Add(dst);
                }
                if (monitor != null)
                {
                    monitor.OnValueChanged(new MyDeal.ValueEventArgs()
                    {
                        value = (double)i / myct.baseImg.Count
                    });
                }
            }
            return(decodeTiff);
        }
Exemplo n.º 5
0
        public static MyTiff decode(MyCompressTiff myct, MyDeal.ProgressMonitor monitor)
        {
            switch (myct.type)
            {
            case MyCompressTiffDefine.TYPE.MOTION:
                return(decodeMotion(myct, monitor));

            case MyCompressTiffDefine.TYPE.SUBSAMPLE:
                return(decodeSubsample(myct, monitor));

            case MyCompressTiffDefine.TYPE.BLOCKBASE:
                return(decodeBB(myct, monitor));
            }
            return(null);
        }