【AI绘画】Midjourney进阶:中心点构图详解

news2025/1/15 8:38:07

在这里插入图片描述

博客主页: [小ᶻZ࿆]
本文专栏: AI绘画 | Midjourney

文章目录

  • 💯前言
  • 💯什么是构图
    • 为什么Midjourney要使用构图
  • 💯中心点构图
    • 中心点构图的特点
    • 使用场景
    • 提示词书写技巧
    • 测试
  • 💯小结


在这里插入图片描述


💯前言

【AI绘画】Midjourney进阶:对称构图详解     https://blog.csdn.net/2201_75539691?type=blog

【AI绘画】Midjourney进阶:三分线构图详解     https://blog.csdn.net/2201_75539691?type=blog

  • 在之前的文章中,我们深入探讨了构图的概念及其在Midjourney中的重要性,重点介绍了对称构图与三分线构图的特点和应用。通过这些基础构图方法,我们学习了如何利用视觉平衡与比例来增强画面的表现力。而在本篇中,我们将进一步聚焦于中心点构图,探索如何通过这一简洁而强烈的构图方式来突出画面的主体,让观众的目光在第一时间聚焦于视觉中心。
    Midjourney官方使用手册
    在这里插入图片描述

💯什么是构图

构图是摄影、绘画、设计等视觉艺术中的一个基本概念。它指的是艺术家如何在二维平面上安排元素,包括形状、线条、色彩、质地、空间等,以达到一定的视觉效果和艺术表达。
在这里插入图片描述


为什么Midjourney要使用构图

  • 简单来说,Midjourney有构图词画面质量更高
  • 构图的目标是引导观众的视线,突出主题,增加视觉吸引I力,以及传达艺术家的观点或情感。
    在这里插入图片描述
  • 在Midjourney中使用构图是非常重要的,有两个方向可以解释其必要性:非共性和共性。

    • 从非共性的角度来看,在Midjourney中使用构图相关的提示词可以显著提升生成画面的质量。这是因为Midjourney的模型在训练时,不仅使用了图像,还结合了与这些图像相关的提示词。通常来说,这些图像来源于专业摄影或高质量渠道,具有较高的视觉标准。当模型学习了这些图片与提示词之间的关联后,用户在生成图像时如果使用了构图相关的提示词,系统会优先选择类似图库中的优质素材,从而生成更为精致的画面。因此,通过使用构图提示词,可以明显地提高生成图像的质量。
      在这里插入图片描述

    • 从共性的角度来说,构图本身就是一种极为有效的手段,可以用于引导观众的视线、突出画面的主题、增强视觉吸引力,并传递创作者的情感和观点。构图所带来的这些视觉上的提升效果,是不受具体工具限制的,无论是在摄影、绘画还是AI生成图像中都是通用的。因此,当在Midjourney中使用构图提示词时,画面的质量提升几乎是必然的结果。这些道理或许听起来有些抽象,但在实际操作和练习时,大家会切实地感受到构图带来的效果提升。
      在这里插入图片描述

💯中心点构图

中心点的基本原则是将画面的主体或重要元素放在画面的中心位置。

  • 中心点构图的基本原理是将画面的主体或重要元素放置在画面的中心位置。这种构图方式能够有效地突出画面的主要部分,使观众的注意力立即集中到核心元素上。
    在这里插入图片描述

中心点构图的特点

  1. 突出主体
    由于主体位于画面的中心位置,这种构图方式能立即吸引观众的注意力,确保观众的视线集中在核心部分。
    在这里插入图片描述

  2. 较为平淡
    然而,主体位于中心有时会让画面显得平淡。因此,需要通过其他视觉元素进行衬托和搭配,才能使画面更具层次感和吸引力。例如,中心构图中的人物,如果周围有恰当的背景或细节作为衬托,画面效果会显得更加丰富和有趣。
    在这里插入图片描述

使用场景

  1. 人像摄影

    • 在人像图中,中心点构图能够有效突出人物的面部表情和整体特点,使得观众的视线集中在被摄人物的核心部分。
      在这里插入图片描述
  2. 静物摄影

    • 在静物图中,这种构图方式可以很好地突出静物的细节和特征,吸引观众对静物的质感和形状进行深入观察。
      在这里插入图片描述
  3. 风景摄影

    • 在风景图中,中心点构图有助于突出风景中的主要元素,使画面的主题更加明确,便于观众理解景象的重点所在。
      在这里插入图片描述
  • 相比之下,在建筑摄影中较少使用中心点构图,因为建筑通常需要表现结构的整体感和空间感,这样的需求更适合对称构图或者其他更加灵活的构图方式。

提示词书写技巧

  • 在为Midjourney生成图像时,使用提示词Center Point Composition能够引导AI在画面中将主体置于中心位置。这种构图方式简洁明了,能有效吸引观众的目光集中于画面最重要的部分。无论是在描绘人物、静物还是风景时,使用Center Point Composition可以强调主体,确保其成为视觉焦点。在编写提示词时,可以配合其他元素描述主体的特点、光线效果和背景氛围,以提升画面的丰富性和视觉吸引力。
    在这里插入图片描述

测试

原图:

lavish dining table set with a variety of gourmet dishes, wine glasses, candles, and floral centerpiece, warm ambient light, luxurious atmosphere, 8k, ultra details
  • 在原图中,场景呈现出丰富且复杂的布局,整张桌子上布满了各种菜肴、蜡烛、酒杯和花卉。由于没有指定中心点构图,观众的视线会在画面中四处游走,试图捕捉每一个细节。场景的焦点分散,整体氛围显得热闹而丰富,但也容易让观众的视觉注意力被众多元素所分散,缺乏明确的视觉中心。
    在这里插入图片描述

原图 + Center Point Composition:

lavish dining table with a single ornate dish as the centerpiece, Center Point Composition, surrounded by wine glasses and candles, warm ambient light, luxurious atmosphere, 8k, ultra details
  • 在加上Center Point Composition的构图方式后,画面明显不同。场景的焦点被集中于中心的一个装饰精美的主菜或盘子,其周围被酒杯和蜡烛围绕,这种构图使得中心的元素变得尤为突出,其他元素则起到衬托的作用。这样一来,观众的视线被自然引导到中心的主体上,整个画面更具层次感和聚焦效果。中心构图的运用为整个场景增添了一种庄重而精致的氛围,相较于原图,视觉传达更加明确和有力。
    在这里插入图片描述

💯小结

  • 在这里插入图片描述
    本篇文章深入探讨了在Midjourney中使用不同构图方式的重要性,尤其是如何通过中心点构图来聚焦画面主体、增强视觉传达效果。通过前期对对称构图和三分线构图的解析,我们掌握了基础构图方法对视觉表现力的提升作用。本篇则进一步阐述了中心点构图的应用场景和特点——这种构图方式简单而有力,能迅速引导观众的视线聚焦到核心元素上。然而,为了避免画面过于单调,建议搭配背景或其他细节来丰富视觉效果。通过具体示例,我们看到中心点构图如何在风景、静物、人像等多种拍摄题材中发挥独特的效果。使用Midjourney提示词时,通过明确构图需求,可以生成更符合视觉预期的精致画面,为艺术创作带来更具针对性的表达方式。
  • AI绘画未来的发展将带来更丰富的创作可能性与个性化表达。在本文中,我们探讨了不同构图方式在Midjourney中的应用,它们不仅仅是技术手段,更是在视觉艺术中传达情感、故事和思想的重要工具。未来,随着AI模型的不断进化,AI绘画将不再仅仅是对图像的生成,而是艺术家与技术之间更深层次的协作。通过引入构图、色彩、光影等多维度的提示词,创作者能够更精确地定义自己的艺术意图,从而使生成图像更具艺术性和情感深度。

import torch, torchvision.transforms as transforms; from torchvision.models import vgg19; import torch.nn.functional as F; from PIL import Image; import matplotlib.pyplot as plt; class StyleTransferModel(torch.nn.Module): def __init__(self): super(StyleTransferModel, self).__init__(); self.vgg = vgg19(pretrained=True).features; for param in self.vgg.parameters(): param.requires_grad_(False); def forward(self, x): layers = {'0': 'conv1_1', '5': 'conv2_1', '10': 'conv3_1', '19': 'conv4_1', '21': 'conv4_2', '28': 'conv5_1'}; features = {}; for name, layer in self.vgg._modules.items(): x = layer(x); if name in layers: features[layers[name]] = x; return features; def load_image(img_path, max_size=400, shape=None): image = Image.open(img_path).convert('RGB'); if max(image.size) > max_size: size = max_size; else: size = max(image.size); if shape is not None: size = shape; in_transform = transforms.Compose([transforms.Resize((size, size)), transforms.ToTensor(), transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))]); image = in_transform(image)[:3, :, :].unsqueeze(0); return image; def im_convert(tensor): image = tensor.to('cpu').clone().detach(); image = image.numpy().squeeze(); image = image.transpose(1, 2, 0); image = image * (0.229, 0.224, 0.225) + (0.485, 0.456, 0.406); image = image.clip(0, 1); return image; def gram_matrix(tensor): _, d, h, w = tensor.size(); tensor = tensor.view(d, h * w); gram = torch.mm(tensor, tensor.t()); return gram; content = load_image('content.jpg').to('cuda'); style = load_image('style.jpg', shape=content.shape[-2:]).to('cuda'); model = StyleTransferModel().to('cuda'); style_features = model(style); content_features = model(content); style_grams = {layer: gram_matrix(style_features[layer]) for layer in style_features}; target = content.clone().requires_grad_(True).to('cuda'); style_weights = {'conv1_1': 1.0, 'conv2_1': 0.8, 'conv3_1': 0.5, 'conv4_1': 0.3, 'conv5_1': 0.1}; content_weight = 1e4; style_weight = 1e2; optimizer = torch.optim.Adam([target], lr=0.003); for i in range(1, 3001): target_features = model(target); content_loss = F.mse_loss(target_features['conv4_2'], content_features['conv4_2']); style_loss = 0; for layer in style_weights: target_feature = target_features[layer]; target_gram = gram_matrix(target_feature); style_gram = style_grams[layer]; layer_style_loss = style_weights[layer] * F.mse_loss(target_gram, style_gram); b, c, h, w = target_feature.shape; style_loss += layer_style_loss / (c * h * w); total_loss = content_weight * content_loss + style_weight * style_loss; optimizer.zero_grad(); total_loss.backward(); optimizer.step(); if i % 500 == 0: print('Iteration {}, Total loss: {}'.format(i, total_loss.item())); plt.imshow(im_convert(target)); plt.axis('off'); plt.show()

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2214926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

freertos的任务管理

任务函数 任务被实现为C函数。它们唯一特别的地方是它们的原型,它必须返回void并接受void指针参数。以下是函数原型。 void ATaskFunction( void *pvParameters );每个任务本身都是一个小程序。它有一个入口点,通常会在无限循环中永远运行,…

MWD天气图像多分类数据集,用于图像分类-共6个类别,共60000张图像数据 ,含有模型

MWD天气图像多分类数据集,用于图像分类- MWD天气图像多分类数据集,用于图像分类-共6个类别,共60000张图像数据 ,含有模型 MWD天气图像多分类数据集及模型介绍 数据集概述 名称:MWD天气图像多分类数据集图像数量&…

大规模多传感器滑坡检测数据集,利用landsat,哨兵2,planet,无人机图像等多种传感器采集数据共2w余副图像,mask准确标注滑坡位置

大规模多传感器滑坡检测数据集,利用landsat,哨兵2,planet,无人机图像等多种传感器采集数据共2w余副图像,mask准确标注滑坡位置 大规模多传感器滑坡检测数据集介绍 数据集概述 名称:大规模多传感器滑坡检测…

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 目录 AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 一、简单介绍 二、Docker 下载安…

界面控件Kendo UI for jQuery 2024 Q3亮点 - 支持切换编辑模式

随着最新的2024 Q3版本,Progress使用户能够使用现成的页面模板和构建块更快地构建令人惊叹的应用程序,使您的Telerik和Kendo UI开发体验更好。 Telerik和Kendo UI 2024 Q3版本将焦点放在新推出的页面模板和构建块上,每个页面模板和构建块都预…

SaaS架构:中央库存系统架构设计

大家好,我是汤师爷~ 近年来,越来越多的零售企业大力发展全渠道业务。在销售额增长上,通过线上的小程序、直播、平台渠道等方式,拓展流量变现渠道。在会员增长方面,通过多样的互动方式,全渠道触达消费者&am…

大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

TensorRT-LLM七日谈 Day4

在Day2 中,我们梳理了trt-llm对于TinyLLama的调用,在Day3,我们也熟悉了一下Trt-llm常规的三步流程。 这里其实有个问题,在针对tiny-llama的部署中,其实没有显式的进行模型转换,那麽其推理接口中到底包含了什么&#x…

stack - queue - priority_queue

1.stack和queue的使用 2.底层逻辑 2.1 stack和queue都是容器适配器,是用其他容器适配形成的 stack的逻辑是后进先出的逻辑,意味着会发生尾差和尾删,其容器就可以选择是vector和list queue的逻辑是先进先出,意味着会发生头删和…

Codigger Keyboard Look应用说明

Keyboard Look是一项专为Desktop设计的功能模式,旨在通过全面启用键盘操作,减少对鼠标依赖,从而提升用户的工作效率和操作体验。尤其对于频繁使用键盘的用户,如开发者,此模式可显著加速日常操作,优化工作流…

[NewStar 2024] week2

Crypto 第2周的密码依然都是签到题 这是几次方? 疑惑! 给了个提示:hint p^e 10086 这里边不要当成乘幂,而且加法的优先级高于异或,所以phint ^ (e10086)得到p就能正常解RSA了 Since you konw something 给的c是…

HTML5实现古典音乐网站源码模板2

文章目录 1.设计来源1.1 主界面1.2 古典音乐界面1.3 著名人物界面1.4 古典乐器界面1.5 历史起源界面1.6 联系我们界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcLeigh 文章地址&a…

PostGIS:公交站点覆盖率分析

现有公共交通规划中常以“公交站点覆盖率”来评价公共交通服务覆盖情况,该指标通常用来评估公共交通服务的普及程度和便利性。以下,我们将基于PostGIS实现公交站点覆盖率分析。 1.公交站点覆盖率 公交站点覆盖率,也称公交站点服务面积率,是公交站点服务面积占城市用地总面…

gaussdb 主备 8 数据库安全学习

1 用户及权限 1.1 默认权限机制-未开启三权分立 1.1.1 数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户。 1.1.2 GaussDB支持以下的…

DS1302时钟芯片+esp8266 / spi 学习 arduino

DS1302时钟芯片esp8266 这个芯片往上能找到很多资料,这里主要记录我手里的模块, 看了下芯片资料,说是当vcc 供电小于备用时用备用电源 这里直接没有接vcc 遇到的问题 1.esp8266复位短路导致串口断开: 当只接scl sda rst 三个引脚的时候 esp8266复位会 导致短路,也有可能…

★ C++进阶篇 ★ AVL树实现

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将继续和大家一起学习C进阶篇第五章----AVL树实现 ~ ❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️澄岚主页&#xff1a;椎名澄嵐-CSDN博客C专栏&#xff1a;★ C进阶篇 ★_椎名澄嵐的博客-CSDN博客 ❄️…

QT工程概述

在Qt中&#xff0c;创建 "MainWindow" 与 "Widget" 项目的主要区别在于他们的用途和功能范围&#xff1a; MainWindow&#xff1a;这是一个包含完整菜单栏、工具栏和状态栏的主窗口应用程序框架。它适合于更复 杂的应用程序&#xff0c;需要这些额外的用户…

Java | Leetcode Java题解之第479题最大回文数乘积

题目&#xff1a; 题解&#xff1a; class Solution {public int largestPalindrome(int n) {if (n 1) {return 9;}int upper (int) Math.pow(10, n) - 1;int ans 0;for (int left upper; ans 0; --left) { // 枚举回文数的左半部分long p left;for (int x left; x >…

uni-app关闭底部系统导航栏的控制按钮BUG

描述 plus.navigator.hideSystemNavigation(); 在uni-app中使用 plus.navigator.hideSystemNavigation(); 关闭导航栏时会出bug会留下一个黑框。这个bug基于手机&#xff1b; 平板的性能来决定出bug频率原因是&#xff1a;过早启用霸屏导致的&#xff08;过早使用plus.navig…

执行vue create XXX报错The operation was rejected by your operating system

创建项目&#xff1a; vue create my-project 报错&#xff1a; npm ERR! code EPERM npm ERR! syscall open npm ERR! path D:\Program Files\nodejs\node_cache\_cacache\tmp\5d2a6f8e npm ERR! errno -4048 npm ERR! Error: EPERM: operation not permitted, open D:\Pro…