当前位置:首页 » 操作系统 » 彩色算法

彩色算法

发布时间: 2022-05-22 22:51:28

‘壹’ 屏幕分辨率和屏幕色彩计算方法

您好,很高兴为您解答疑问。显示分辨率就是屏幕上显示的像素个数,分辨率160×128的意思是水平像素数为160个,垂直像素数128个。分辨率越高,像素的数目越多,感应到的图像越精密。而在屏幕尺寸一样的情况下,分辨率越高,显示效果就越精细和细腻。屏幕色彩:这里所指的屏幕颜色实质上即为色阶的概念。色阶是表示液晶显示屏亮度强弱的指数 标准,也就是通常所说的色彩指数。 目前彩屏的色阶指数从低到高可分三个层次,最低单色,其次是256色、4096色、 65536色; 目前最高的为26万色。256=2的8次方,即8位彩色,依次律推,65536色=2的16次方,即通常所说 的16位真彩色,26万=2的18次方,也就是18位真彩。其实65536色已基本可满足我们肉眼的识别 需求。

‘贰’ 我想采用彩色图像形态学的算法

你说的这种叫做RGB向量空间分割或者HSI向量空间分割,一般做法是将饱和度作为一个模版图像,利用感兴趣彩色的代表性的彩色点样品集得到彩色平均估计,这种彩色就是希望分割的彩色,然后分割的目标就是对图像的每个RGB像素进行分类。

‘叁’ 请教彩色图转灰度图的算法

把颜色的红绿蓝都设成一个值,这个值就是原来RGB的平均值.

例如:
临时变量=(原红色值*30+原绿色值*59+原蓝色值*11)/100;
原红色值=临时变量;
原绿色值=临时变量;
原蓝色值=临时变量;

这个算法是别人写的图象处理程序源码上算法.

‘肆’ 找一种图像处理算法----把同一物体的三幅RGB分量图像复合成为彩色图像

首先你这种方法就不对。
三色滤光镜就能得到RGB分量了?
很显然不是。
你把拍好的照片放到ps里面看看每个点的颜色RGB是不是(x,0,0)这样的。
如果要还原照片彩色,
很简单,你要知道你的滤镜在拍摄的时候起到了什么作用,是通过怎么样的算法把彩色的景物转换成了单色的照片了的。。

‘伍’ 怎样用matlab实现彩色图像变黑白图片算法

简单来说,目前市面上绝大多数的彩色转黑白都是通过一个确定的函数Gray=f(R,G,B)将彩色空间映射到灰度空间。然而很容易想到的是,对于任何一个‘事先确定好’的映射,我们总是能找到一些‘坏’的数据,使得原先还算正常的彩图变成‘很糟糕’的灰度图。

理由也很简单:毕竟彩色空间到灰度空间降了两个维度,对于‘事先确定好’的映射函数f,我们总是能找到颜色略有不同但灰度接近的情况。

这个映射函数本身是根据输入图像动态计算出来的。换句话说,对于不同的图,这个映射函数可以是不一样的!即使是同一个颜色,在不同的图像中也可能被映射成不同的灰度。

‘陆’ 求matlab彩色图片的颜色特征提取算法的代码,和纹理特征提取的代码。传统方法即可。

其实学数字图像处理,关键的不是源代码(和一般编程还是有区别的,这个是经验之谈,其实一般博导未必会编程,但是你和他说说你的方法,他一般都能切中要害),而是你能理解基于概念及适用场所。
基于颜色、纹理、形状都属于低层特征,这些你理解就够了,关键是对你的课题适合哪种方法来映射到高层语义上面,例如:识别物体轮廓,那可能形状就比较适合等。
我之所以写上面那段话,主要是我感觉你索取代码也不说明具体要求,也就是方向不明确。
如今颜色特征提取算法有很多,诸如颜色直方图、颜色矩、颜色集、颜色聚合向量、颜色相关图等,既然你没说,我就给个IEEE CSVT 2001的一篇关于颜色直方图法的论文(源码版权归作者所有):
function colorhist = colorhist(rgb)
% CBIR_colorhist() --- color histogram calculation
% input: MxNx3 image data, in RGB
% output: 1x256 colorhistogram == (HxSxV = 16x4x4)
% as the MPEG-7 generic color histogram descriptor
% [Ref] Manjunath, B.S.; Ohm, J.-R.; Vasudevan, V.V.; Yamada, A., "Color and texture descriptors"
% IEEE Trans. CSVT, Volume: 11 Issue: 6 , Page(s): 703 -715, June 2001 (section III.B)
% check input
if size(rgb,3)~=3
error('3 components is needed for histogram');
end
% globals
H_BITS = 4; S_BITS = 2; V_BITS = 2;
%rgb2hsv可用rgb2hsi代替,见你以前的提问。
hsv = uint8(255*rgb2hsv(rgb));

imgsize = size(hsv);
% get rid of irrelevant boundaries
i0=round(0.05*imgsize(1)); i1=round(0.95*imgsize(1));
j0=round(0.05*imgsize(2)); j1=round(0.95*imgsize(2));
hsv = hsv(i0:i1, j0:j1, :);

% histogram
for i = 1 : 2^H_BITS
for j = 1 : 2^S_BITS
for k = 1 : 2^V_BITS
colorhist(i,j,k) = sum(sum( ...
bitshift(hsv(:,:,1),-(8-H_BITS))==i-1 &...
bitshift(hsv(:,:,2),-(8-S_BITS))==j-1 &...
bitshift(hsv(:,:,3),-(8-V_BITS))==k-1 ));
end
end
end
colorhist = reshape(colorhist, 1, 2^(H_BITS+S_BITS+V_BITS));
% normalize
colorhist = colorhist/sum(colorhist);

%基于纹理特征提取灰度共生矩阵用于纹理判断
% Calculates cooccurrence matrix
% for a given direction and distance
%
% out = cooccurrence (input, dir, dist, symmetric);
%
% INPUT:
% input: input matrix of any size
%
% dir: direction of evaluation
% "dir" value Angle
% 0 0
% 1 -45
% 2 -90
% 3 -135
% 4 -180
% 5 +135
% 6 +90
% 7 +45
%
% dist: distance between pixels
%
% symmetric: 1 for symmetric version
% 0 for non-symmetric version
%
% eg: out = cooccurrence (input, 0, 1, 1);
% Author: Baran Aydogan (15.07.2006)
% RGI, Tampere University of Technology
% [email protected]

function out = cooccurrence (input, dir, dist, symmetric);

input = round(input);
[r c] = size(input);

min_intensity = min(min(input));
max_intensity = max(max(input));

out = zeros(max_intensity-min_intensity+1);
if (dir == 0)
dir_x = 0; dir_y = 1;
end

if (dir == 1)
dir_x = 1; dir_y = 1;
end

if (dir == 2)
dir_x = 1; dir_y = 0;
end

if (dir == 3)
dir_x = 1; dir_y = -1;
end

if (dir == 4)
dir_x = 0; dir_y = -1;
end

if (dir == 5)
dir_x = -1; dir_y = -1;
end

if (dir == 6)
dir_x = -1; dir_y = 0;
end

if (dir == 7)
dir_x = -1; dir_y = 1;
end

dir_x = dir_x*dist;
dir_y = dir_y*dist;

out_ind_x = 0;
out_ind_y = 0;

for intensity1 = min_intensity:max_intensity
out_ind_x = out_ind_x + 1;
out_ind_y = 0;

[ind_x1 ind_y1] = find (input == intensity1);
ind_x1 = ind_x1 + dir_x;
ind_y1 = ind_y1 + dir_y;

for intensity2 = min_intensity:max_intensity
out_ind_y = out_ind_y + 1;

[ind_x2 ind_y2] = find (input == intensity2);

count = 0;

for i = 1:size(ind_x1,1)
for j = 1:size(ind_x2,1)
if ( (ind_x1(i) == ind_x2(j)) && (ind_y1(i) == ind_y2(j)) )
count = count + 1;
end
end
end

out(out_ind_x, out_ind_y) = count;

end
end

if (symmetric)

if (dir < 4)
dir = dir + 4;
else
dir = mod(dir,4);
end
out = out + cooccurrence (input, dir, dist, 0);
end

热点内容
湛江移动服务器ip 发布:2024-10-26 13:12:17 浏览:633
找回dns服务器地址 发布:2024-10-26 12:48:23 浏览:239
王者皮肤系统脚本 发布:2024-10-26 12:46:44 浏览:507
电脑配置8g怎么查看 发布:2024-10-26 12:40:58 浏览:810
布朗编程 发布:2024-10-26 12:35:27 浏览:305
php平滑重启 发布:2024-10-26 12:25:33 浏览:945
竹压缩板材 发布:2024-10-26 12:21:32 浏览:754
重大校园网服务器地址 发布:2024-10-26 12:06:10 浏览:876
js引入php 发布:2024-10-26 12:05:48 浏览:469
编程扩大条件 发布:2024-10-26 11:58:06 浏览:341