2011-05-22 109 views
0

我正在matlab中進行圖像壓縮。應用閾值掩碼

我在圖像上應用DCT後,我有img矩陣,我想在該矩陣上應用閾值掩碼。

mask =  [1 1 1 1 0 0 0 0 
      1 1 1 0 0 0 0 0 
      1 1 0 0 0 0 0 0 
      1 0 0 0 0 0 0 0 
      0 0 0 0 0 0 0 0 
      0 0 0 0 0 0 0 0 
      0 0 0 0 0 0 0 0 
      0 0 0 0 0 0 0 0]; 

maskedImg = blkproc(img,[8 8],mask); 

我使用的功能,但它沒有工作,我也得到錯誤消息:

錯誤==> blkproc在67 並[a,塊,邊界,趣味,則params,padval] = parse_inputs( varargin {:});

+0

定義「沒有工作」。 – 2011-05-22 17:57:24

+0

您是否閱讀過「blkproc」的文檔?特別是,「樂趣」參數的描述? – 2011-05-22 17:59:05

+0

我做過我曾嘗試myAveFun = @(掩碼)大小(掩碼); maskedImg = blkproc(C,[8 8],myAveFun)。但它還沒有工作 – cagryInside 2011-05-22 18:03:26

回答

2

根據最新的Matlab文件;最接近blockproc語法(對於您的情況)是B = blockproc(A,[M N],fun)。所以顯然你的mask真的應該是一個功能!

不過,我記得blkproc一直是前一陣子的有效Matlab功能,從而仔細檢查的正確方法通過(在命令行)> help blkproc輸入調用它。 (Al強硬我相當確信它將與blockproc [在這種情況下]共享呼叫簽名)。