各路高人,徒弟有一个任务,要求图像在缩小0.25倍以下都不失真。我用三次卷积内插方法,好像实现不了。请各路高人指点。

解决方案 »

  1.   

    图像缩小肯定存在部分数据的丢失,多多少少都有些失真。
    图像缩小可以用cximage的Resample函数来实现
      

  2.   

    我们老师给了一个Opencv做的例子。那个程序缩小到0.125的时候都几乎没有失真。他要求的就是要那样的效果……
      

  3.   

    用GDI+把位图转成你想要的大小,
    BOOL CMultiImageDlg::ResizeSrcPicture(BYTE *pbySrcPic,BYTE *pByDstPic,int nDstWidth,int  nDstHeight, int nSrcWidth,int nSrcHeight)
    {
    BYTE * pByte;
    BitmapData *pBitmapData = new BitmapData;
    Bitmap ppbitmap (nSrcWidth, nSrcHeight, (nSrcWidth*24+31)/32*4,  PixelFormat24bppRGB, pbySrcPic);
    Rect rect( 0, 0, nDstWidth, nDstHeight);
    Graphics imgGraphics(&ppbitmap);   
    Bitmap bitmap(nDstWidth,nDstHeight,&imgGraphics);   
    Graphics bmpGraphics(&bitmap);   
    bmpGraphics.DrawImage(&ppbitmap,0,0,nDstWidth,nDstHeight); 
    bitmap.LockBits(&rect, ImageLockModeRead, PixelFormat24bppRGB, pBitmapData );
    pByte= (BYTE *) pBitmapData->Scan0;
    long BufLen=(nDstWidth * 24 + 31)/ 32 * 4*nDstHeight;
    memcpy(pByDstPic,pByte,BufLen);
    bitmap.UnlockBits( pBitmapData );
    delete [] pBitmapData;
    return TRUE;}
    newBmiHder.biSize=sizeof(BITMAPINFOHEADER);
    newBmiHder.biWidth=StaticRect.Width();
    newBmiHder.biHeight=StaticRect.Height();
    newBmiHder.biPlanes=1;
    newBmiHder.biBitCount=24;
    newBmiHder.biCompression=BI_RGB;
    newBmiHder.biSizeImage=BufferLen;
    newBmiHder.biXPelsPerMeter=0;
    newBmiHder.biYPelsPerMeter=0;
    newBmiHder.biClrUsed=0;
    newBmiHder.biClrImportant=0;
    dc[i]=((CStatic *)GetDlgItem(703+i))->GetDC();
    BYTE *pNewBm[9];
     BITMAPINFOHEADER newBmiHder;
    StretchDIBits(dc[i]->GetSafeHdc(),0,0,StaticRect.Width(),StaticRect.Height(),0,0,StaticRect.Width(),StaticRect.Height(),pNewBm[i],(LPBITMAPINFO)&newBmiHder,DIB_RGB_COLORS,SRCCOPY);#include "./gdiplus/GdiPlus.h"
    using namespac
      

  4.   

    http://sautiller.pixnet.net/blog/post/25138722
    要翻某墙才能看,所以直接发一下结果:(1) 第 1 名是: Lanczos.  其輸出的檔案大小變成 84.3 KB.
     文字的線條是最銳利, 畫面最清晰的!  不過由於過度強化了銳利度, 造成了一點額外的小雜訊.(2) 第 2 名有三種並列: Bilinear (65.2 KB), Hanning (65.7 KB), 和 Hermite (65.7 KB).
     這三種畫面清晰度差不多, 畫面的色澤最貼近原圖, 失真程度最少, 不過文字線條的銳利度比 Lanczos 稍微差一點點.(3) 第 5 名是: Mitchell (72.8 KB).(4) 第 6 名是: Gaussian (70.7 KB).(5) 第 7 名是: Bell (71.6 KB).(6) 第 8 名是: B-Spline (72.8 KB).(7) 第 9 名是: Nearest-neighbor (36.7 KB).
     使用它縮圖的畫質最糟糕, 但唯一的優點是檔案變小了.
      

  5.   

    档案大小是JPEG压缩的结果,也就是图像中平滑内容越少,文件越大,也较为锐利。
      

  6.   

    双线性插值就行,一般不会造成感观上的损失
    http://blog.csdn.net/lifesider/article/details/6527267