濾波
濾波是將信號(hào)中特定波段頻率濾除的操作,是抑制和防止干擾的一項(xiàng)重要措施。濾波分為經(jīng)典濾波和現(xiàn)代濾波。濾波是將信號(hào)中特定波段頻率濾除的操作,是抑制和防止干擾的一項(xiàng)重要措施。是根據(jù)觀察某一隨機(jī)過程的結(jié)果,對(duì)另一與之有關(guān)的隨機(jī)過程進(jìn)行估計(jì)的概率理論與方法。
濾波器
電源濾波器是由電容、電感和電阻組成的濾波電路。濾波器可以對(duì)電源線中特定頻率的頻點(diǎn)或該頻點(diǎn)以外的頻率進(jìn)行有效濾除,得到一個(gè)特定頻率的電源信號(hào),或消除一個(gè)特定頻率后的電源信號(hào)。
主要作用
濾波器,顧名思義,是對(duì)波進(jìn)行過濾的器件。“波”是一個(gè)非常廣泛的物理概念,在電子技術(shù)領(lǐng)域,“波”被狹義地局限于特指描述各種物理量的取值隨時(shí)間起伏變化的過程。該過程通過各類傳感器的作用,被轉(zhuǎn)換為電壓或電流的時(shí)間函數(shù),稱之為各種物理量的時(shí)間波形,或者稱之為信號(hào)。因?yàn)樽宰兞繒r(shí)間‘是連續(xù)取值的,所以稱之為連續(xù)時(shí)間信號(hào),又習(xí)慣地稱之為模擬信號(hào)(Analog Signal)。隨著數(shù)字式電子計(jì)算機(jī)(一般簡(jiǎn)稱計(jì)算機(jī))技術(shù)的產(chǎn)生和飛速發(fā)展,為了便于計(jì)算機(jī)對(duì)信號(hào)進(jìn)行處理,產(chǎn)生了在抽樣定理指導(dǎo)下將連續(xù)時(shí)間信號(hào)變換成離散時(shí)間信號(hào)的完整的理論和方法。
也就是說,可以只用原模擬信號(hào)在一系列離散時(shí)間坐標(biāo)點(diǎn)上的樣本值表達(dá)原始信號(hào)而不丟失任何信息,波、波形、信號(hào)這些概念既然表達(dá)的是客觀世界中各種物理量的變化,自然就是現(xiàn)代社會(huì)賴以生存的各種信息的載體。信息需要傳播,靠的就是波形信號(hào)的傳遞。信號(hào)在它的產(chǎn)生、轉(zhuǎn)換、傳輸?shù)拿恳粋€(gè)環(huán)節(jié)都可能由于環(huán)境和干擾的存在而畸變,甚至是在相當(dāng)多的情況下,這種畸變還很嚴(yán)重,以致于信號(hào)及其所攜帶的信息被深深地埋在噪聲當(dāng)中了
線性濾波之平滑濾波
傳統(tǒng)的濾波方式將濾波分為線性濾波和非線性濾波,這里首先說下線性濾波。
?。?)線性濾波的示例3x3的平均濾波器。
案例如下:
public class ImageJAndroid2Activity extends Activity {
ImageView sourceImage;
ImageView destinationImage;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sourceImage=(ImageView) findViewById(R.id.source);
destinationImage=(ImageView) findViewById(R.id.destination);
}
public void remove(View v){
Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.cc);
int width=bitmap.getWidth();
int height=bitmap.getHeight();
int[] pixel=new int[width*height];
int[] outpixel=new int[width*height];
bitmap.getPixels(pixel, 0, width, 0, 0, width, height);
for(int y=0;y《height;y++){
for(int x=0;x《width;x++){
int sumred=0;
int sumgreen=0;
int sumblue=0;
int a=pixel[y*width+x]》》24&0xff;;
for(int i=-1;i《=1;i++){
int newi=y+i;
if(newi《0 ||newi》=height){
newi=y;
}
for(int j=-1;j《=1;j++){
int newj=x+j;
if(newj《0 || newj》=width){
newj=x;
}
int red=pixel[newi*width+newj]》》16&0xff;
int green=pixel[newi*width+newj]》》8&0xff;
int blue=pixel[newi*width+newj]&0xff;
sumred+=red;
sumgreen+=green;
sumblue+=blue;
}
}
int newred=(int)Math.round(sumred/9.0);
int newgreen=(int)Math.round(sumgreen/9.0);
int newblue=(int)Math.round(sumblue/9.0);
outpixel[y*width+x]=a《《24|newred《《16|newgreen《《8|newblue;
}
}
Bitmap newBitmap=Bitmap.createBitmap(width, height,Config.RGB_565);
newBitmap.setPixels(outpixel, 0, width,0,0, width, height);
destinationImage.setImageBitmap(newBitmap);
}
}
效果圖:
大家應(yīng)該看得出來效果吧。
?。?)3x3的平滑濾波器
采用這種方式得到的平滑的濾波圖像
activity:
public class ImageJAndroid2Activity extends Activity {
ImageView sourceImage;
ImageView destinationImage;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sourceImage=(ImageView) findViewById(R.id.source);
destinationImage=(ImageView) findViewById(R.id.destination);
}
//平滑濾波器
public void remove(View v){
Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.cc);
int[][] filter={
{3,5,3},
{5,8,5},
{3,5,3}
};
int width=bitmap.getWidth();
int height=bitmap.getHeight();
int[] pixel=new int[width*height];
int[] outpixel=new int[width*height];
bitmap.getPixels(pixel, 0, width, 0, 0, width, height);
for(int y=0;y《height;y++){
for(int x=0;x《width;x++){
int sumred=0;
int sumgreen=0;
int sumblue=0;
int a=0;
for(int i=-1;i《=1;i++){
int newi=y+i;
if(newi《0||newi》=height){
newi=y;
}
for(int j=-1;j《=1;j++){
int newj=x+j;
if(newj《0||newj》=width){
newj=x;
}
a=pixel[newi*width+newj]》》24&0xff;
int red=pixel[newi*width+newj]》》16&0xff;
int green=pixel[newi*width+newj]》》8&0xff;
int blue=pixel[newi*width+newj]&0xff;
sumred+=filter[i+1][j+1]*red;
sumgreen+=filter[i+1][j+1]*green;
sumblue+=filter[i+1][j+1]*blue;
}
}
outpixel[y*width+x]=a《《24|((int)(sumred/40))《《16|((int)(sumgreen/40))《《8|((int)(sumblue/40));
}
}
Bitmap newBitmap=Bitmap.createBitmap(width, height,Config.RGB_565);
newBitmap.setPixels(outpixel, 0, width, 0, 0, width, height);
destinationImage.setImageBitmap(newBitmap);
}
效果圖:
大家會(huì)覺得平均濾波與平滑濾波的區(qū)別不是蠻大,但是在處理精細(xì)圖片的時(shí)候區(qū)別還是蠻蠻明顯的。
這里所使用到的是3x3矩陣,因?yàn)?x3使用的比較多,除此之外你自己還可以定義任意尺寸的濾波器。例如5x5,,21x21
評(píng)論
查看更多