六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

黑白圖像的縮小灰度級顯示算法的編寫

[摘要]大家都知道,黑白圖像是0,1二值的,縮小顯示的時(shí)候由于n個(gè)點(diǎn)轉(zhuǎn)化成1個(gè)點(diǎn)會導(dǎo)致圖像局部細(xì)節(jié)信息丟失,比如一條寬度一個(gè)象素的細(xì)線由于縮小可能就會沒有顯示,而使用灰度級顯示正是能解決這個(gè)縮小顯示的問題,Windows自帶的Eastman Software提供的的圖像處理可以在你縮小黑白圖片的時(shí)候使用灰...
大家都知道,黑白圖像是0,1二值的,縮小顯示的時(shí)候由于n個(gè)點(diǎn)轉(zhuǎn)化成1個(gè)點(diǎn)會導(dǎo)致圖像局部細(xì)節(jié)信息丟失,比如一條寬度一個(gè)象素的細(xì)線由于縮小可能就會沒有顯示,而使用灰度級顯示正是能解決這個(gè)縮小顯示的問題,Windows自帶的Eastman Software提供的的圖像處理可以在你縮小黑白圖片的時(shí)候使用灰度級來顯示,下面我們就來深入研究一下這個(gè)算法是如何實(shí)現(xiàn)的吧。



基本約定:

1.  灰度級縮小顯示只正對黑白或者灰度影像,經(jīng)過算法變換可用于彩色影像

2.  只有在顯示<100%的時(shí)候灰度級顯示才生效

3.  灰度級縮小算法是基于原始圖像來運(yùn)算

具體算法:

1.  縮小算法

按照與原圖比例1:n來對原圖nXn個(gè)點(diǎn)生成1個(gè)點(diǎn)(n可以是浮點(diǎn)數(shù)),考慮到效率可以使用灰度級變換,從0-255 取中間點(diǎn)127大于該值顯示白小于改值顯示黑色。

2.  灰度級顯示算法

結(jié)合縮小算法nXn個(gè)點(diǎn)生成一個(gè)點(diǎn)的原則,在原圖上按照每個(gè)點(diǎn)的權(quán)值和顏色相乘再除以n來得到生成點(diǎn)的顏色值。

例如:

a1  a2   a3  a4  a5  a6   a7  a8  a9 a10

----- ---*- ----- -*--- ----- *---- -----*----- ----- -----



--------- --------- ---------- ---------- ---------- --------- --

b1    b2     b3     b4     b5     b6

經(jīng)過變換后

b1 = (1.0*a1+0.8*a2)/1.8

b2 = (0.2*a2+a3+0.6*a3)/1.8

……



這是一維坐標(biāo),擴(kuò)展到二維空間算法相同。

具體實(shí)現(xiàn)方法:

1.  計(jì)算出縮小后的位圖點(diǎn)陣大小(nXm)

比如原圖100X100,縮放90%之后就是90X90點(diǎn)陣

2.  循環(huán)點(diǎn)陣,為每個(gè)點(diǎn)的顏色賦值

賦值方法取相關(guān)點(diǎn)顏色乘以相應(yīng)權(quán)值累加除以權(quán)值和




原圖




縮放為66.6%




計(jì)算每點(diǎn)值



Delphi代碼如下



var

  i,j:integer;

  tmpColorR,tmpColorG,tmpColorB:dWord;

  x,y:integer;

  ScaleRate,ScaleRateX,ScaleRateY:real;

begin

       //combobox1.text為縮放%

  ScaleRate:=100/strtoFloatDef(combobox1.text,100);

//循環(huán)生成圖像的點(diǎn)陣

  for i:=0 to  trunc(image1.Picture.Width/ScaleRate) do

    for j:=0 to  trunc(image1.Picture.height/ScaleRate) do

      begin

        tmpColorR:=0;

        tmpColorG:=0;

        tmpColorB:=0;

              //為每個(gè)點(diǎn)累加相關(guān)節(jié)點(diǎn)的顏色

        for x:=trunc(i*ScaleRate) to  ceil(((i+1)*ScaleRate)-1) do

          begin

            for y:=trunc(j*ScaleRate) to ceil(((j+1)*ScaleRate)-1) do

              begin

                ScaleRateX:=Min(x+1,(i+1)*ScaleRate) - Max(x,i*ScaleRate);

                ScaleRateY:=Min(y+1,(j+1)*ScaleRate) - Max(y,j*ScaleRate);

              //取每個(gè)點(diǎn)的RGB值(如果是黑白或者灰度,只需要取得一位)

                tmpColorR:=tmpColorR+trunc(ScaleRateX*ScaleRateY*(GetRValue(Image1.Canvas.Pixels[x,y])));

                tmpColorG:=tmpColorG+trunc(ScaleRateX*ScaleRateY*(GetGValue(Image1.Canvas.Pixels[x,y])));

                tmpColorB:=tmpColorB+trunc(ScaleRateX*ScaleRateY*(GetBValue(Image1.Canvas.Pixels[x,y])));

              end;

          end;

//為點(diǎn)賦值顏色

        image2.Canvas.Pixels[i,j]:=RGB(trunc(tmpColorR/(ScaleRate*ScaleRate)),trunc(tmpColorG/(ScaleRate*ScaleRate)),trunc(tmpColorB/(ScaleRate*ScaleRate)));

      end;


這個(gè)算法是我寫的第一版本,還有很多優(yōu)化余地,比如如果是黑白圖像就不需要計(jì)算R G B,因?yàn)?56級灰度全部是相同的
另外for循環(huán)中的表達(dá)式可能影像速度,還有用整數(shù)運(yùn)算會比浮點(diǎn)快,等等。


主站蜘蛛池模板: 在线看国产 | 亚洲精品成人网 | 青青网视频| 尹人久久久香蕉精品 | 青青青青手机在线观看 | 五月激情六月 | 日日操夜夜操免费视频 | 天天色网站 | 色噜噜网站 | 亚洲 欧美 字幕 一区 在线 | 伊人青青草| 亚洲欧美日韩第一页 | 日本一二三区高清 | 欧美在线观看网址 | 天天干天天插天天操 | 片免费观看在线看 | 性夜a爽黄爽 | 日韩国产三级 | 欧洲美女a视频一级毛片 | 在线97视频| 亚洲免费网站 | 日本aⅴ在线 | 青青草原在线免费观看 | 青青草好 | 欧美无遮挡一区二区三区 | 亚洲 欧美 日韩 在线 中文字幕 | 香蕉免费一区二区三区 | 亚洲视频中文字幕在线观看 | 亚洲国产一区二区三区最新 | 一区二区三区福利视频 | 午夜色站| 天天综合天天看夜夜添狠狠玩 | 亚洲国产精品一区二区久久hs | 日本在线高清视频 | 中文字幕日韩在线一区国内 | 青娱极品盛宴国产精品分类 | 欧美亚洲国产精品久久久 | 人人射人人舔 | 日产国产精品久久久久久 | 色台湾色综合网站 | 色噜噜狠狠色综合欧洲selulu |