建筑设计的 画分色图是 啥意思??哪种叫分色图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了建筑设计的 画分色图是 啥意思??哪种叫分色图相关的知识,希望对你有一定的参考价值。

http://www.doc88.com/p-994979543868.html
(1)明确色彩选用依据,可按《国家建筑标准设计图集常用建 筑色》 (02J503-1)《GJBT-558 常用建筑色图集》 、 、或国家、企业 颁布的其它色卡设计标准选取颜色及编号。 (2)对单体建筑分色进行分区、分材料编号并形成材料汇总表 (以表格+SU 模型表示) 。 (3)对各材料的材料标准、材质、规格、色卡编号、施工要求 进行文字描述,各材料提供照片或图片小样,并配以实际效果图 片。

(4)各主要材料的详细材料信息包括: ? 外墙贴面砖、文化石 面砖类别: 材质标准、要求: 色卡编号: 规格: ? 外墙涂料 涂料类别: 材质标准、要求: 色卡编号: 涂布要求: ? 玻璃幕墙、干挂石材幕墙、玻璃雨蓬 材质标准、要求: 色卡编号: 规格: 表面处理要求: ? 阳台栏杆、空调挡板、格栅 材质类别: 材质标准、要求: 色卡编号: 金属材质的表面处理及防腐和油漆要求: ? 外门窗

材质标准、要求: 色卡编号: 窗框表面处理要求: ? GRC、各类线条、线角、门窗套及屋面瓦材质标准、要求: 色卡编号: 表面处理要求: ? 雨水管、遮阳蓬 材料类别: 材质标准、要求: 色卡编号: 表面处理要求: 4、立面分色图中应包含以下信息: (1)建筑单体各立面造型、尺度、色彩、材质; (2)建筑各部位、构件必要的详图(配色) ,主要包括: ? 玻璃幕墙、雨蓬、干挂石材幕墙的定位、立面分格图、造型 详图; ? 阳台栏杆、空调挡板、格栅的造型、花式、尺寸详图; ? 外门窗必要的详图(含分格区、开启方式、玻璃颜色等,不 含窗框本身构造) ; ? GRC、各类线条、线角、门窗套、屋面瓦的大样图; 5、材料分布平面索引图

对应个建筑单体立面分色图,需绘制材料分布平面牵引图,选 取材料分布的各典型平面(首层、标准层、顶层或其它平面) ,沿平 面外边缘标明各段所用材料,用不同颜色、线型区分,并于材料汇总 表的个材料相对应。 6、立面节点三维示意图 对立面图无法准确表示的阴角、凹凸等立面或不同构件、线 条的交界处节点, 需用 SU 模型进行详细表示, 并标明各材料的颜色、 材质等信息。 7、随《立面分色图》须提供外立面材料的实物封样,进行相应编号 并达到上述要求,作为立面分色设计的内容之一。 8、施工图阶段建筑平、立、剖面及墙身大样和节点详图须保证与方 案阶段的建筑单体外立面效果设计一致, 特别是尺度控制和尺寸标注 必须明确完整。 需要进行放样的必须由方案设计单位完成细部放样设 计,施工图设计单位落实到施工图设计中。 9、方案设计单位必须参加施工过程中的立面材料现场封样、确认工 作。 10、建筑单体竣工验收中,单体实物效果验收应依据与立面分色图的 一致性进行设计验收,若不一致,且是设计原因,施工图设计单位需 按合同承担相应的设计责任。
参考技术A 一般用于施工图。用来表达表皮处不同材质的分布。一种材料就一种颜色。不一定要和材料颜色对应得上。本回答被提问者采纳 参考技术B 分色图是指外立面墙体所用材料的具体做法,选用什么材料,该材料怎么用在哪里,从哪里开始开线等等 参考技术C 建筑设计的图层从来就是分不同颜色的,在电脑里画建筑图的轴线、墙体、门窗、散水、钢筋的、尺寸标注等等都是分不同颜色的。 参考技术D 没有分色图吧,有分析图这一说法。

OpenCV 使用 k-means 对图像进行分色

【中文标题】OpenCV 使用 k-means 对图像进行分色【英文标题】:OpenCV using k-means to posterize an image 【发布时间】:2012-03-23 10:57:13 【问题描述】:

我想在 C++ 接口(cv 命名空间)中使用 k-means 和 OpenCV 对图像进行分色,结果很奇怪。我需要它来减少一些噪音。这是我的代码:

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main() 
    Mat imageBGR, imageHSV, planeH, planeS, planeV;

    imageBGR = imread("fruits.jpg");
    imshow("original", imageBGR);
    
    cv::Mat labels, data;
    cv::Mat centers(8, 1, CV_32FC1);
    imageBGR.convertTo(data, CV_32F);

    cv::kmeans(data, 8, labels,
            cv::TermCriteria(CV_TERMCRIT_ITER, 10, 1.0),
            3, cv::KMEANS_PP_CENTERS, &centers);
    imshow("posterized hue", data);
    data.convertTo(data, CV_32FC3);

    waitKey();
    return 0;

但我得到了一个奇怪的结果

第一张图片:原图

第二张图片:在 k-means 之后。

有什么建议吗?


更新:正确的解决方案。也许有人可以帮助我优化代码?

#include "cv.h"
#include "highgui.h"

#include <iostream>

using namespace cv;
using namespace std;

int main() 
    Mat src;

    src = imread("fruits.jpg");
    imshow("original", src);

    blur(src, src, Size(15,15));
    imshow("blurred", src);

    Mat p = Mat::zeros(src.cols*src.rows, 5, CV_32F);
    Mat bestLabels, centers, clustered;
    vector<Mat> bgr;
    cv::split(src, bgr);
    // i think there is a better way to split pixel bgr color
    for(int i=0; i<src.cols*src.rows; i++) 
        p.at<float>(i,0) = (i/src.cols) / src.rows;
        p.at<float>(i,1) = (i%src.cols) / src.cols;
        p.at<float>(i,2) = bgr[0].data[i] / 255.0;
        p.at<float>(i,3) = bgr[1].data[i] / 255.0;
        p.at<float>(i,4) = bgr[2].data[i] / 255.0;
    

    int K = 8;
    cv::kmeans(p, K, bestLabels,
            TermCriteria( CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0),
            3, KMEANS_PP_CENTERS, centers);

    int colors[K];
    for(int i=0; i<K; i++) 
        colors[i] = 255/(i+1);
    
    // i think there is a better way to do this mayebe some Mat::reshape?
    clustered = Mat(src.rows, src.cols, CV_32F);
    for(int i=0; i<src.cols*src.rows; i++) 
        clustered.at<float>(i/src.cols, i%src.cols) = (float)(colors[bestLabels.at<int>(0,i)]);
//      cout << bestLabels.at<int>(0,i) << " " << 
//              colors[bestLabels.at<int>(0,i)] << " " << 
//              clustered.at<float>(i/src.cols, i%src.cols) << " " <<
//              endl;
    

    clustered.convertTo(clustered, CV_8U);
    imshow("clustered", clustered);

    waitKey();
    return 0;

结果:

【问题讨论】:

可能只是您需要更多的迭代和/或更小的 epsilon。我建议您现在尝试删除“CV_TERMCRIT_EPS”,并在您的 TermCriteria 中使用迭代次数。看看有没有帮助。 我刚接触计算机视觉、图像处理和机器学习,但对我来说,我正在做的事情还有另一个错误,而不仅仅是参数微调.. 我不是建议您开始参数调整,而是建议您简化代码以测试您正在尝试的内容是否以其最基本的形式工作。移除 epsilon 并增加迭代次数会移除不必要的诡计。 好的,我已经从 skretch 重做它并编辑我的问题 现在查看编辑,这是一个很好的结果,也许应该优化 【参考方案1】:

我不是 OpenCV 方面的专家,所以我会给出一个与您的问题相关的一般性建议 K-means 采用本质上是一个矩阵的向量列表:

[x0, y0, r0, g0, b0]
[x1, y1, r1, g1, b1]
[x2, y2, r2, g2, b2]
.
.
.

你给它的图像是行不通的。您首先必须将图像转换为这种 k-means 矩阵格式。对于源图像的每个像素,您在结果矩阵中有一行。另请注意,您应该缩放这些值,以使它们都具有相似的值。如果不这样做,x 和 y 坐标通常会比颜色具有更高的“重力”,从而导致结果不理想。 C++伪代码:

int pixel_index = 0;
for (int y = 0; y < image height; y++)  
  for (int x = 0; x < image width; x++)  
     matrix[pixel_index][0] = (float)x / image width;
     matrix[pixel_index][1] = (float)y / image height;
     matrix[pixel_index][2] = (float)pixel(x, y).r / 255.0f;
     matrix[pixel_index][3] = (float)pixel(x, y).g / 255.0f;
     matrix[pixel_index][4] = (float)pixel(x, y).b / 255.0f;
  

// Pass the matrix to kmeans...

因此,您会获得每个像素的标签,这些标签对应于它被分配到的集群。然后,您需要确定集群的颜色 - 这可以从获取中心像素颜色值到计算集群的平均/中值颜色。确定颜色后,只需遍历图像并将像素设置为它们的集群颜色:

for (int y = 0; y < image height; y++)  
  for (int x = 0; x < image width; x++)  
     int index = y * image width + x;  // This corresponds to pixel_index above
     int cluster_index = labels[index]; // 0 to 7 in your case
     Color color = colors[cluster_index];  // Colors is an array of 8 colors of the clusters
     image.setpixel(x, y, color)
  

如果您更喜欢使用 HSV 而不是 RGB,只需使用 HSV 值而不是 RGB 值。

OpenCV 有可能具有完全执行我上面描述的转换的函数,但我无法使用 Google 快速找到它们。

【讨论】:

抱歉,我在哪里可以找到有关此 kmeans 特定输入格式的信息? 在 OpenCV 文档 (opencv.willowgarage.com/documentation/cpp/…) 中:samples – Floating-point matrix of input samples, one row per sample 其中 sample 表示多维点。在彩色图像的情况下,该点有 5 个维度(x、y、r、g、b)。这几乎是执行 kmeans 的标准方法,OpenCV 只是使用自己的数据结构来表达它。对于 kmeans 的一般介绍,我推荐在 ml-class.org 上观看有关 kmeans 的机器学习视频。 我已经订阅了下一个课程还没有开始! :) 它工作得很好,谢谢。查看编辑我发布了正确的代码。也许它可以用一些我不知道的opencv api方法进行优化 我很高兴它可以工作 :) 您的代码有一个微妙的错误 - 您将所有三个通道分配给第一个循环中的第 0 个元素。这意味着当它们被覆盖时,您仅按颜色(而不是坐标)进行聚类。还要确保在计算归一化 x、y 坐标时使用浮点除法。【参考方案2】:

如果您不需要在 k-means 中设置 x,y 坐标,则可以使用 reshape 命令更快地排列数据,如下所示:

  int origRows = img.rows;
  notes << "original image is: " << img.rows << "x" << img.cols << endl;
  Mat colVec = img.reshape(1, img.rows*img.cols); // change to a Nx3 column vector
  cout << "colVec is of size: " << colVec.rows << "x" << colVec.cols << endl;
  Mat colVecD, bestLabels, centers, clustered;
  int attempts = 5;
  int clusts = 8;
  double eps = 0.001;
  colVec.convertTo(colVecD, CV_32FC3, 1.0/255.0); // convert to floating point
  double compactness = kmeans(colVecD, clusts, bestLabels, 
        TermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, attempts, eps), 
        attempts, KMEANS_PP_CENTERS, centers);
  Mat labelsImg = bestLabels.reshape(1, origRows); // single channel image of labels
  cout << "Compactness = " << compactness << endl;

【讨论】:

好!不错的方法,我正在寻找一种简单的方法来做到这一点!谢谢! @zzzz 特征向量中的坐标应该有助于“空间连贯性”,对吧?也就是说,它更喜欢将颜色相似且彼此靠近的像素分组。

以上是关于建筑设计的 画分色图是 啥意思??哪种叫分色图的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 使用 k-means 对图像进行分色

VB进行RGB分色

需要有关 PDF 分色的帮助/答案

PROFILE是啥意思啊.

识图预算中WTL剖面图中的C代表啥意思

CSS背景渐变图片问题