Ⅰ 求個大神幫寫一個C語言RGB565轉換為灰度圖像的演算法。
最多隻能給你寫個rgb565像素轉灰度像素的。
不知道你圖像是什麼格式,如何保存,以及各種其他什麼什麼信息。
所以圖像那邊的循環就你自己去搞定了,我只給你搞單個像素
#define rgb565togray(x) \
(unsigned char) ( \
((val) >> 11) * 0.3 + \
(((val) >> 5) & 0x3f) * 0.59 + \
((val) & 0x1f) * 0.11 \
)
Ⅱ 計算機圖形學旋轉演算法
繞任意點旋轉的思路是,先將任意旋轉點一起平移到原點,圖像隨旋轉點一起平移,然後根據旋轉矩陣將圖像旋轉,然後再將旋轉點與圖像一起平移回原先的位置.
旋轉矩陣:將所需旋轉角轉換為弧度後算出COS和SIN函數結果並填入矩陣,將旋轉點與組成圖像的所有頂點坐標與矩陣相乘獲得變換後的新坐標.
任意點旋轉的復合矩陣
矩陣相乘的順序很重要,因為矩陣相乘先後結果是不對等的,而矩陣表達上是從右到左的,比如T*R*-T,計算過程相當於T*(R*-T),另外矩陣相乘是採用交叉點乘,而M矩陣也是個3*3的矩陣
得到M復合矩陣後,再將原點與圖像頂點與M相乘,即可得到變換後的新坐標.即P'=M*P
圖像變換演算法其實特簡單,就是cos和sin,然後就是四則運算,再填入矩陣,計算復合矩陣,按現在的教學大綱小學生都會,計算機寫程序一點沒難度,重點其實在圖像變換的理解上.
Ⅲ 將jpeg圖像轉換成bmp圖像的解碼演算法
可以實現JPEG和bmp圖像相互轉換的解碼演算法,文件大這里上傳不了,到我的共享資料里下載.
Ⅳ 怎樣用matlab實現彩色圖像變黑白圖片演算法
簡單來說,目前市面上絕大多數的彩色轉黑白都是通過一個確定的函數Gray=f(R,G,B)將彩色空間映射到灰度空間。然而很容易想到的是,對於任何一個『事先確定好』的映射,我們總是能找到一些『壞』的數據,使得原先還算正常的彩圖變成『很糟糕』的灰度圖。
理由也很簡單:畢竟彩色空間到灰度空間降了兩個維度,對於『事先確定好』的映射函數f,我們總是能找到顏色略有不同但灰度接近的情況。
這個映射函數本身是根據輸入圖像動態計算出來的。換句話說,對於不同的圖,這個映射函數可以是不一樣的!即使是同一個顏色,在不同的圖像中也可能被映射成不同的灰度。
Ⅳ 圖像變換的目的是什麼,常用的圖像變換演算法有哪些
圖像變換的目的為了有效和快速地對圖像進行處理和分析,需要將原定義在圖像空間的圖像以某種形式轉換到另外的空間,利用空間的特有性質方便地進行一定的加工,最後再轉換回圖像空間以得到所需的效果。
圖像變換是對圖像處理演算法的總結,它可以分為四個部分:空域變換等維度演算法,空域變換變維度演算法,值域變換等維度演算法和值域變換變維度演算法。
其中空域變換主要指圖像在幾何上的變換,而值域變換主要指圖像在像素值上的變換。等維度變換是在相同的維度空間中,而變維度變換是在不同的維度空間中,例如二維到三維,灰度空間到彩色空間。
(5)轉圖像演算法擴展閱讀:
相關延伸:圖像簡介
21世紀是一個充滿信息的時代,圖像作為人類感知世界的視覺基礎,是人類獲取信息、表達信息和傳遞信息的重要手段。數字圖像處理,即用計算機對圖像進行處理,其發展歷史並不長。數字圖像處理技術源於20世紀20年代,當時通過海底電纜從英國倫敦到美國紐約傳輸了一幅照片,採用了數字壓縮技術。
首先數字圖像處理技術可以幫助人們更客觀、准確地認識世界,人的視覺系統可以幫助人類從外界獲取3/4以上的信息,而圖像、圖形又是所有視覺信息的載體,盡管人眼的鑒別力很高;
可以識別上千種顏色,但很多情況下,圖像對於人眼來說是模糊的甚至是不可見的,通過圖象增強技術,可以使模糊甚至不可見的圖像變得清晰明亮。
在計算機中,按照顏色和灰度的多少可以將圖像分為二值圖像、灰度圖像、索引圖像和真彩色RGB圖像四種基本類型。大多數圖像處理軟體都支持這四種類型的圖像。
中國物聯網校企聯盟認為圖像處理將會是物聯網產業發展的重要支柱之一,它的具體應用是指紋識別技術。
Ⅵ c# form求一個圖像旋轉90°的演算法
這么寫就行了,不過GetPixel,SetPixel這種演算法很耗時,建議你還是用指針
//順時針
private void button1_Click(object sender, EventArgs e)
{
Bitmap bitmap1 = (Bitmap)pictureBox2.Image;
Bitmap bitmap2 = new Bitmap(pictureBox2.Height, pictureBox2.Width);
for (int i = 0; i < bitmap1.Width; i++)
{
for (int j = 0; j < bitmap1.Height; j++)
{
Color color = bitmap1.GetPixel(i, j);
bitmap2.SetPixel(bitmap2.Width - j - 1, bitmap2.Height - i - 1, color);
}
}
pictureBox3.Image = bitmap2;
}
//逆時針
private void button2_Click(object sender, EventArgs e)
{
Bitmap bitmap1 = (Bitmap)pictureBox2.Image;
Bitmap bitmap2 = new Bitmap(pictureBox2.Height, pictureBox2.Width);
for (int i = 0; i < bitmap1.Width; i++)
{
for (int j = 0; j < bitmap1.Height; j++)
{
Color color = bitmap1.GetPixel(i, j);
bitmap2.SetPixel(j, i, color);
}
}
pictureBox3.Image = bitmap2;
}
Ⅶ 彩色圖像轉換成灰度圖像用什麼演算法灰度分割得細
現在的真彩3通道
圖像
一般是24位的,該圖像的
亮度
信息是8位的,所以是無法真正達到16位
灰度圖像
的。當然你可以用
插值
實現,但這是對原有
圖像信息
的改變,而不是原圖像
實際
轉換而來。
Ⅷ 數字圖像處理 圖像縮放以及旋轉的演算法代碼
clearall;
I=imread('lena.bmp');
figure;imshow(I);title('原圖像');
[m,n]=size(I);
%%%縮小臨近法
M=0.5;%放大倍數
%新的圖像大小
m1=m*M;n1=n*M;
%****************************************************
fori=1:m1
forj=1:n1;
J(i,j)=I(round(i/M),round(j/M));
end
end
%*****************************************************
figure;imshow(J);title('縮小圖像');
%%%放大雙線性插值法
I2=double(I);
N=1.5;%放大倍數
%新的圖像大小
m2=m*N;n2=n*N;
J2=zeros(m2,n2);
fori=1:m2
forj=1:n2
x=i/N;
y=j/N;
u=floor(x);
v=floor(y);
a=x-u;
b=y-v;
ifu+2<=m&v+2<=n
J2(i,j)=I2(u+1,v+1)*(1-a)*(1-b)+I2(u+2,v+1)*a*(1-b)+I2(u+1,v+2)*(1-a)*b+I2(u+2,v+2)*a*b;
end
end
end
J2=uint8(J2);
figure;imshow(J2);title('放大圖像');
%%%%%旋轉
R=45*pi/180;%旋轉角度
I=double(I);
%新圖像大小
m2=ceil(m*cos(R)+n*sin(R));
n2=ceil(m*sin(R)+n*cos(R));
u0=m*sin(R);%平移量
%變換矩陣
T=[cos(R),sin(R);-sin(R),cos(R)];
L=zeros(m2,n2);
foru=1:n2
forv=1:m2
%新圖像坐標變換到原圖像坐標x和y中
temp=T*([u;v]-[u0;0]);
x=temp(1);
y=temp(2);
ifx>=1&x<=m&y>=1&y<=n%若變換出的x和y在原圖像范圍內
x_low=floor(x);
x_up=ceil(x);
y_low=floor(y);
y_up=ceil(y);
%雙線性插值,p1到p4是(x,y)周圍的四個點
p1=I(x_low,y_low);
p2=I(x_up,y_low);
p3=I(x_low,y_low);
p4=I(x_up,y_up);
s=x-x_low;
t=y-y_low;
L(u,v)=(1-s)*(1-t)*p1+(1-s)*t*p3+(1-t)*s*p2+s*t*p4;
end
end
end
L=uint8(L);
figure;imshow(L);
Ⅸ 圖像變換的圖像變換的方法
實現圖像變換的手段有數字和光學兩種形式,它們分別對應二維離散和連續函數運算。數字變換在計算機中進行,提高運算速度是這種方式的關鍵。常用的有三種變換方法。①傅里葉變換:它是應用最廣泛和最重要的變換。它的變換核是復指數函數,轉換域圖像是原空間域圖像的二維頻譜,其「直流」項與原圖像亮度的平均值成比例,高頻項表徵圖像中邊緣變化的強度和方向。為了提高運算速度,計算機中多採用傅里葉快速演算法。②沃爾什-阿達瑪變換:它是一種便於運算的變換。變換核是值+1或-1的有序序列。這種變換只需要作加法或減法運算,不需要象傅里葉變換那樣作復數乘法運算,所以能提高計算機的運算速度,減少存儲容量。這種變換已有快速演算法,能進一步提高運算速度。③離散卡夫納-勒維變換:它是以圖像的統計特性為基礎的變換,又稱霍特林變換或本徵向量變換。變換核是樣本圖像的協方差矩陣的特徵向量。這種變換用於圖像壓縮、濾波和特徵抽取時在均方誤差意義下是最優的。但在實際應用中往往不能獲得真正協方差矩陣,所以不一定有最優效果。它的運算較復雜且沒有統一的快速演算法。除上述變換外,餘弦變換、正弦變換、哈爾變換和斜變換也在圖像處理中得到應用。
Ⅹ 把24位彩色圖像轉換成8位的灰度圖像的演算法
nGray=0.299*R+0.587*G+0.114*B